type
status
date
slug
summary
tags
category
icon
password
本文介绍了Authelia的安装,以及在Traefik中的使用。如果不需要,也可跳过本篇。
📝 Authelia介绍
Authelia 是一个开源的身份验证和授权服务器,通过 Web 门户为您的应用程序提供双因素身份验证和单点登录(SSO)。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F5e368c8b-646b-436a-a88d-a3102bf21ee5%2F68747470733a2f2f7777772e61757468656c69612e636f6d2f696d616765732f61726368692e706e67.png?table=block&id=c3d0cb28-997c-4a5a-9756-edfead142050&t=c3d0cb28-997c-4a5a-9756-edfead142050&width=698&cache=v2)
💿 Authelia安装
下面介绍了在Unraid中安装Authelia,如果使用独立的Docker部署,请跳转到下一节Docker Compose。
Redis
默认情况下,Authelia使用内存保存会话。不配置redis会使Authelia有状态。推荐在生产环境中使用redis。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Ff052cf33-774f-4c20-a935-8f9fc0b85103%2FUntitled.png?table=block&id=8e5367ce-b59e-4803-9552-0b3740f3761b&t=8e5367ce-b59e-4803-9552-0b3740f3761b&width=626&cache=v2)
在应用中找到redis,点击安装。
- 设置自定义网络
- 设置一个强密码(稍后将由Authelia使用)
- 按如下方式添加应用数据路径
在模板中,单击“添加另一个路径、端口、变量、标签或设备”并添加以下路径:
容器路径: /bitnami/
主机路径: /mnt/user/appdata/redis/bitnami/
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F005ebd2b-22eb-4a6d-84bb-c4f5c36075ed%2FUntitled.png?table=block&id=c0030e5b-b732-4bbf-a849-2e658b0117a9&t=c0030e5b-b732-4bbf-a849-2e658b0117a9&width=2348&cache=v2)
使用以下命令更改 redis 文件夹的权限:
chmod -R 777 /mnt/user/appdata/redis/*
MariaDB
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F8132efb0-6971-4a8d-95b7-62db40fbcf54%2FUntitled.png?table=block&id=56d6437b-cf98-48ac-8f08-babfb1473c66&t=56d6437b-cf98-48ac-8f08-babfb1473c66&width=617&cache=v2)
如果您尚未安装 MariaDB(或PostgreSQL),请创建Authelia数据库容器。
- 设置自定义网络
- 设置root密码
- 设置Authelia数据库、用户和密码(稍后将由Authelia使用)。
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fc66553a7-2cce-4797-a387-d76b3ab4ba5b%2FUntitled.png?table=block&id=9db60126-a70e-46c8-8957-7069cdda0210&t=9db60126-a70e-46c8-8957-7069cdda0210&width=2330&cache=v2)
如果您已经安装了MariaDB,可以按以下步骤为Authelia创建数据库:
- 创建Authelia用户:
- 进入数据库控制台:
- 创建数据库用户
将
YOURPASSWORD
替换为你的数据库密码,此密码将在configuration.yml中引用。- 创建数据库
- 输入下面的内容回车:
- 授权
- 输入下面的内容回车:
- 退出
YOURPASSWORD
是您为上面的用户创建的密码。Authelia
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2Fa3282c41-221e-4c47-b16f-d5393a8de41d%2FUntitled.png?table=block&id=20a870c7-d59b-49ac-9a86-74444f5ece7a&t=20a870c7-d59b-49ac-9a86-74444f5ece7a&width=614&cache=v2)
按下图创建Authelia容器
![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F3b094f64-70b2-4926-848a-9410c554c888%2FUntitled.png?table=block&id=530d102d-087a-4189-90d8-8c12a151b14e&t=530d102d-087a-4189-90d8-8c12a151b14e&width=1835&cache=v2)
在我们允许Traefik将auth请求转发到Authelia之前,我们首先需要通过Traefik反向代理 Authelia应用程序。所以我们添加了3个标签到Authelia。
点击
添加另一个路径、端口、变量、标签或设备
,选择配置类型为标签
,如下图:![notion image](https://www.notion.so/image/https%3A%2F%2Fs3-us-west-2.amazonaws.com%2Fsecure.notion-static.com%2F041554bf-768d-475a-a99f-bd6cddea71a3%2FUntitled.png?table=block&id=eaaa8b72-a089-4877-97a9-e11f21afabc5&t=eaaa8b72-a089-4877-97a9-e11f21afabc5&width=1218&cache=v2)
依次添加其它标签,完成后启动容器。
注意
由于未配置,容器将立即关闭。这是正常的,您可以暂时将其关闭。
Docker Compose
这里也给出Docker Compose的示例。
🛠️ Authelia配置
配置文件
重要
为了避免 Authelia 重定向到循环中,您必须将此规则添加到 Authelia configuration.yml 中的访问控制部分:
其中
auth.domain
是 authelia 自身的域名。configuration.yml配置模板:
配置文件中的
secret
为随机字符串,可以用以下命令生成:使用两步验证绑定设备时,会向你的邮箱发送注册链接,这需要你有正确可用的SMTP配置。
除了邮箱通知,也可以将通知发送到文件,文件系统通知应只用于测试目的。
Authelia的地址一定要bypass,否则可能会无限循环认证。
创建用户
Authelia有两种方式获取用户信息
选项 1 - 使用简单的 YML 文件和 Authelia 可以读取的用户加密凭据。
选项 2 - 允许 Authelia 从 LDAP 数据库(如 FreeIPA 或 Active Directory)读取数据。
为了方便,我们使用使用用户数据库文件
users_database.yml
.users_database.yml
- 将文件内容复制到appdata/authelia/users_database.yml中。 您必须编辑此文件。
- 将文件调整为要登录的用户。如需帮助,请参阅此处:https://www.authelia.com/docs/configuration/authentication/file.html 例如,更改包括用户名和显示名称。
- 要生成散列密码,请打开终端输入以下内容(将“yourpassword”替换为您想要的用户密码):
启动
此时,您应该启动 Authelia 容器并读取日志。
测试您是否可以访问 Authelia 的 WebUI (https://auth.domain.com) 并可以登录。
![notion image](https://www.notion.so/image/https%3A%2F%2Fprod-files-secure.s3.us-west-2.amazonaws.com%2Fd830565e-330b-4d2f-b216-b572f545000b%2Fc4292df0-8990-4a40-8c98-00e92b6e693c%2FUntitled.png?table=block&id=0ee8663e-70f1-463c-a04c-66841ec3e323&t=0ee8663e-70f1-463c-a04c-66841ec3e323&width=432&cache=v2)
设置2FA,在邮箱或者
notification.txt
文件中找到验证码。![notion image](https://img.biliko.net/2024/03/de8e6de22d6557fd28d6688d87ad53f5.png?t=ec1050c8-1928-4b97-b003-ff3182b7ba4d)
规则
了解规则
Authelia 配置文件中的规则部分有一些重要的注意事项需要考虑:
- 规则由Authelia从上到下阅读
- 因此,您应该将最严格的规则放在最后。
- 最后的包罗万象通配符规则将通过对您启用 Authelia 的任何内容应用默认策略来保护您,而无需特定规则。
- 有时,您可能希望允许单因素身份验证涵盖某些应用程序,而双因素身份验证涵盖其他应用程序。
- 您可以指定可以访问特定资源的用户和/或组。
- 您可以限制对 URL 的特定子文件夹(而不是整个 URL)的访问。例如,如果要保护应用程序的“管理”页面,而不是主页本身。
- 如果您愿意,您可以结合上述所有内容。
规则示例
绕过API
在上面,您可能会注意到某些规则允许API端点。当您想要保护使用API通信发送和接收数据并且不希望它受到Authelia阻碍的应用程序时,这一点很重要。
一个典型的例子是Sonarr或Radarr。这些应用程序需要 API 与其他应用程序通信,并且由于它们无法自己“登录”到 Authelia,我们需要告诉 Authelia:
1.我们想用Authelia保护 sonarr.domain.com
2.但是,我们希望绕过 Authelia 来处理进出 Sonarr API 端点的流量。
下面是规则(从上面的示例中提取):
同样,请记住层次结构。我们希望绕过高于任何限制性规则,以便 Authelia 知道绕过此端点是第一位的。
📎 参考文章
有关Authelia安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
- 作者:Biliko
- 链接:https://biliko.net/article/traefik-part4
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
相关文章