mirror of
https://github.com/blakeblackshear/frigate.git
synced 2026-05-03 20:17:42 +03:00
2.9 KiB
2.9 KiB
| id | title |
|---|---|
| authentication | 身份认证 |
身份认证
Frigate 将用户信息存储在数据库中,采用 PBKDF2-SHA256 算法(60万次迭代)生成密码哈希值。登录成功后,系统会签发带有过期时间的 JWT 令牌并设置为 Cookie,该 Cookie 会自动刷新。此 JWT 令牌也可通过 Authorization 头部的 Bearer Token 方式传递。
用户管理入口:设置 > 用户
Frigate Web UI 访问端口说明:
| 端口 | 描述 |
|---|---|
8971 |
需认证的 UI 和 API 端口,建议反向代理使用此端口 |
5000 |
内部免认证端口,应限制访问范围。专为 Docker 网络内无需认证的集成服务设计 |
初始设置
启动时会生成管理员账号密码并打印在日志中。首次登录后建议立即在"设置 > 用户"中修改默认密码。
重置管理员密码
若被锁定时,可通过配置文件强制重置密码(下次启动时生效):
auth:
reset_admin_password: true
登录失败限流
为防止暴力破解,支持多级速率限制(基于 SlowApi 实现)。例如 1/second;5/minute;20/hour 表示:
- 每秒不超过 1 次失败
- 每分钟不超过 5 次失败
- 每小时不超过 20 次失败
重启服务会重置计数器。若使用反向代理,需配置可信代理 IP 段:
auth:
failed_login_rate_limit: "1/second;5/minute;20/hour"
trusted_proxies:
- 172.18.0.0/16 # Docker 内部网络段
JWT 密钥管理
安全要求:
- 至少 64 位加密随机字符串
- 生成命令:
python3 -c 'import secrets; print(secrets.token_hex(64))'
密钥加载优先级:
- 环境变量
FRIGATE_JWT_SECRET - Docker 密钥文件
/run/secrets/FRIGATE_JWT_SECRET - Home Assistant 插件配置
- 配置文件目录下的
.jwt_secret文件
(注:修改密钥会使现有令牌失效)
代理集成配置
基础配置
auth:
enabled: False # 禁用内置认证
proxy:
auth_secret: "<随机密钥>" # 代理通信密钥
头映射
支持从代理头中提取用户信息:
proxy:
header_map:
user: x-forwarded-user # 用户名头
role: x-forwarded-role # 角色头
端口差异:
- 8971 端口:强制角色验证(admin/viewer)
- 5000 端口:始终视为 admin 权限
登录跳转
支持自动识别代理返回的 401/302/307 跳转地址。
自定义登出
proxy:
logout_url: "https://example.com/logout" # 代理登出地址
用户角色体系
角色类型
- admin:完全控制权限(含用户管理)
- viewer:只读权限
权限控制
- 通过 8971 端口访问时强制验证角色
- 通过 5000 端口访问时默认获得 admin 权限
(角色管理入口:设置 > 用户)