https://github.com/authelia/authelia


users_database.yml里面放入用户数据格式大概如下
示例程序
ymlusers:
admin: # 自定义账号
displayname: "Admin"
password: "$argon2id$v=19$m=65536,t=3,p=4$UC+yj8d9Vd2WjftBMi56PQ$7vBnyxZoJ4ZDseMK2fyA/OhvA9K7uFK5R0V06Ep3D+E" # 自定义密码,注意:这个密码必须是通过argon2推导函数加密后的密码可以在项目目录运行这个指令加密你的密码:./authelia crypto hash generate argon2
email: admin@test.com # 修改密码时需要邮箱验证(可以默认)
groups:
- admins
configuration.yml里面放入authelia的配置文件示例程序
ymlserver:
address: 0.0.0.0:9091 # 监听端口
identity_validation:
reset_password:
jwt_secret: "9b7e4c0e4d7eddf25b3e4dfhjefdf9d8e" # 重置密码时的认证密钥一般用不到注意不要泄露可自定义32位以上
authentication_backend:
file:
path: /opt/authelia/users_database.yml # users_database.yml文件路径
regulation:
max_retries: 3 # 最大登录错误次数
find_time: 2m # 2分钟内
ban_time: 1h # 封ip1小时
access_control: # 规则配置(注意:从上往下配对)
default_policy: two_factor
rules:
- domain: "auth.cokey.top" # 服务网页
policy: one_factor # 这个必须为one...
- domain: "text1.cokey.top"
resources: # 只保护单路径需要配置
- "^/admin.*"
policy: two_factor
- domain: "text2.cokey.top"
policy: one_factor
- domain: "*.cokey.top" # (全部子域名)
policy: two_factor
session:
secret: "2a6f9c0b7hfjahdudwf8b7d6e5c4a3b2f" # 自己设置32位以上
cookies:
- domain: "cokey.top" # 根域名(根据实际修改)
authelia_url: "https://auth.cokey.top" # 服务部署的域名(根据实际修改)
storage:
encryption_key: "6f4e3dwdjwiadidwe6d5c4b3a2f1e0d9c" # 数据库加密密钥自己设置32位以上
local:
path: /opt/authelia/db.sqlite3 # 数据库位置(启动后自动创建,删除后2fa要重新注册)
notifier:
filesystem:
filename: /opt/authelia/notification.txt # 注册2fa时需要验证码(在这里面)
启动命令(别忘了给文件赋予运行权限)
./authelia --config configuration.yml
如果是全站守护
location / { auth_request /authelia; # 添加这两行 error_page 401 = @authelia_signin; proxy_pass http://127.0.0.1:5244; # 注意端口 } # ......省略部分 # ============================== # Authelia 官方认证接口 # ============================== location = /authelia { internal; proxy_pass http://127.0.0.1:9091/api/verify; proxy_set_header Host $host; proxy_set_header X-Original-URL $scheme://$http_host$request_uri; proxy_set_header X-Real-IP $remote_addr; proxy_pass_request_body off; proxy_set_header Content-Length ""; } location @authelia_signin { return 302 https://auth.cokey.top/?rd=$scheme://$host$request_uri; # 注意域名 }
如果是单路径下全守护
location ^~ /admin { auth_request /authelia; # 添加整个location ^~ /admin {... error_page 401 = @authelia_signin; auth_request_set $user $upstream_http_remote_user; auth_request_set $groups $upstream_http_remote_groups; proxy_pass http://127.0.0.1:4001; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $http_connection; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Port $server_port; proxy_http_version 1.1; } location / { proxy_pass http://127.0.0.1:5244; # 注意端口 } # ......省略部分 # ============================== # Authelia 官方认证接口 # ============================== location = /authelia { internal; proxy_pass http://127.0.0.1:9091/api/verify; proxy_set_header Host $host; proxy_set_header X-Original-URL $scheme://$http_host$request_uri; proxy_set_header X-Real-IP $remote_addr; proxy_pass_request_body off; proxy_set_header Content-Length ""; } location @authelia_signin { return 302 https://auth.cokey.top/?rd=$scheme://$host$request_uri; }
警告
保护的服务全部走内网127.0.0.1然后nginx反代+对接auhtelia、否则保护无效可以直接绕过防护
本文作者:cokey
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!