2026-03-29
技术
0

目录

一、准备autherlia安装包
二、创建配置文件
1.运行起来的大致布局(先看一下哈)
3.手动创建文件configuration.yml里面放入authelia的配置文件
4.启动运行注册第一个2fa
5.后面就是守护进程,nginx对接(重点)后面提供对接部分参考程序

一、准备autherlia安装包

https://github.com/authelia/authelia

image.png

二、创建配置文件

1.运行起来的大致布局(先看一下哈)

image.png

2.手动创建文件users_database.yml里面放入用户数据

格式大概如下

image.png 示例程序

yml
users: 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
3.手动创建文件configuration.yml里面放入authelia的配置文件

示例程序

yml
server: 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时需要验证码(在这里面)
4.启动运行注册第一个2fa

启动命令(别忘了给文件赋予运行权限)

./authelia --config configuration.yml
5.后面就是守护进程,nginx对接(重点)后面提供对接部分参考程序

如果是全站守护

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

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 许可协议。转载请注明出处!