一、准备autherlia安装包
https://github.com/authelia/authelia

二、创建配置文件
1.运行起来的大致布局(先看一下哈)

2.手动创建文件users_database.yml里面放入用户数据
格式大概如下

示例程序
1 2 3 4 5 6 7 | 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的配置文件
示例程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | 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
启动命令(别忘了给文件赋予运行权限)
1 | ./authelia --config configuration.yml |
5.后面就是守护进程,nginx对接(重点)后面提供对接部分参考程序
如果是全站守护
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | location ^~ / { auth_request /internal/authelia/authz; error_page 401 = @authelia_signin; proxy_pass http://127.0.0.1:5244; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; 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; add_header X-Cache $upstream_cache_status; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; # ......省略部分 # ============================== # Authelia 官方认证接口 # ============================== location = /internal/authelia/authz { internal; proxy_pass http://127.0.0.1:9091/api/authz/auth-request; proxy_pass_request_body off; proxy_set_header Content-Length ""; # 标准端口下直接使用 $host proxy_set_header X-Original-URL $scheme://$host$request_uri; proxy_set_header X-Original-Method $request_method; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-URI $request_uri; # 直连防伪造 IP 传递 proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; } location @authelia_signin { return 302 https://auth.cokey.top/?rd=$scheme://$host$request_uri; } |
如果是单路径下全守护
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | location ^~ /admin { auth_request /internal/authelia/authz; error_page 401 = @authelia_signin; proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; 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; add_header X-Cache $upstream_cache_status; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; } location ^~ / { proxy_pass http://127.0.0.1:8080; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; 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; add_header X-Cache $upstream_cache_status; proxy_ssl_server_name off; proxy_ssl_name $proxy_host; }# ......省略部分 # ============================== # Authelia 官方认证接口 # ============================== location = /internal/authelia/authz { internal; proxy_pass http://127.0.0.1:9091/api/authz/auth-request; proxy_pass_request_body off; proxy_set_header Content-Length ""; # 标准端口下直接使用 $host proxy_set_header X-Original-URL $scheme://$host$request_uri; proxy_set_header X-Original-Method $request_method; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-URI $request_uri; # 直连防伪造 IP 传递 proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Real-IP $remote_addr; } location @authelia_signin { return 302 https://auth.cokey.top/?rd=$scheme://$host$request_uri; } |
评论已关闭