type
status
date
slug
summary
tags
category
icon
password
😀
本文介绍了Authelia的安装,以及在Traefik中的使用。如果不需要,也可跳过本篇。

📝 Authelia介绍

Authelia 是一个开源的身份验证和授权服务器,通过 Web 门户为您的应用程序提供双因素身份验证和单点登录(SSO)。
notion image

💿 Authelia安装

Authelia需要配合反向代理使用,使用Redis作为Session的缓存,存储后端支持PostgreSQL,SQLite3,或MySQL,本文以MariaDB为例。
下面介绍了在Unraid中安装Authelia,如果使用独立的Docker部署,请跳转到下一节Docker Compose。

Redis

💡
默认情况下,Authelia使用内存保存会话。不配置redis会使Authelia有状态。推荐在生产环境中使用redis。
 
notion image
在应用中找到redis,点击安装。
  1. 设置自定义网络
  1. 设置一个强密码(稍后将由Authelia使用)
  1. 按如下方式添加应用数据路径
    1. 在模板中,单击“添加另一个路径、端口、变量、标签或设备”并添加以下路径: 容器路径: /bitnami/ 主机路径: /mnt/user/appdata/redis/bitnami/
 
notion image
💡
使用以下命令更改 redis 文件夹的权限:
chmod -R 777 /mnt/user/appdata/redis/*

MariaDB

notion image
如果您尚未安装 MariaDB(或PostgreSQL),请创建Authelia数据库容器。
  1. 设置自定义网络
  1. 设置root密码
  1. 设置Authelia数据库、用户和密码(稍后将由Authelia使用)。
notion image
 
如果您已经安装了MariaDB,可以按以下步骤为Authelia创建数据库:
  1. 创建Authelia用户:
      • 进入数据库控制台:
        • 创建数据库用户
          • YOURPASSWORD替换为你的数据库密码,此密码将在configuration.yml中引用。
    1. 创建数据库
        • 输入下面的内容回车:
      1. 授权
          • 输入下面的内容回车:
            • YOURPASSWORD是您为上面的用户创建的密码。
          • 退出
         
         

        Authelia

        notion image
        按下图创建Authelia容器
        notion image
        在我们允许Traefik将auth请求转发到Authelia之前,我们首先需要通过Traefik反向代理 Authelia应用程序。所以我们添加了3个标签到Authelia。
        点击添加另一个路径、端口、变量、标签或设备,选择配置类型为标签,如下图:
        notion image
        依次添加其它标签,完成后启动容器。
        💡
        注意
        由于未配置,容器将立即关闭。这是正常的,您可以暂时将其关闭。

        Docker Compose

        这里也给出Docker Compose的示例。
         

        🛠️ Authelia配置

        配置文件

        appdata/authelia文件夹中可以找到configuration.yml,建议参考官方配置文档(https://www.authelia.com/docs/configuration/)
        ⚠️
        重要
        为了避免 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
         
        1. 将文件内容复制到appdata/authelia/users_database.yml中。 您必须编辑此文件。
        1. 将文件调整为要登录的用户。如需帮助,请参阅此处:https://www.authelia.com/docs/configuration/authentication/file.html 例如,更改包括用户名和显示名称。
        1. 要生成散列密码,请打开终端输入以下内容(将“yourpassword”替换为您想要的用户密码):

          启动

          此时,您应该启动 Authelia 容器并读取日志。
          测试您是否可以访问 Authelia 的 WebUI (https://auth.domain.com) 并可以登录。
          notion image
          设置2FA,在邮箱或者notification.txt文件中找到验证码。
          notion image

          规则

          了解规则

          Authelia 配置文件中的规则部分有一些重要的注意事项需要考虑:
          • 规则由Authelia从上到下阅读
            • 因此,您应该将最严格的规则放在最后。
            • 最后的包罗万象通配符规则将通过对您启用 Authelia 的任何内容应用默认策略来保护您,而无需特定规则。
          • 有时,您可能希望允许单因素身份验证涵盖某些应用程序,而双因素身份验证涵盖其他应用程序。
          • 您可以指定可以访问特定资源的用户和/或组。
          • 您可以限制对 URL 的特定子文件夹(而不是整个 URL)的访问。例如,如果要保护应用程序的“管理”页面,而不是主页本身。
          • 如果您愿意,您可以结合上述所有内容。
          ⚠️
          警告
          您将在下面找到一个完整的列表,以作为示例通读。
          这是一个有效且有效的示例,但是不建议在没有完全理解规则的作用的情况下盲目复制它
          有关访问控制的更深入信息,请参阅官方Authelia文档
          规则示例
           

          绕过API

          在上面,您可能会注意到某些规则允许API端点。当您想要保护使用API通信发送和接收数据并且不希望它受到Authelia阻碍的应用程序时,这一点很重要。
          一个典型的例子是Sonarr或Radarr。这些应用程序需要 API 与其他应用程序通信,并且由于它们无法自己“登录”到 Authelia,我们需要告诉 Authelia:
          1.我们想用Authelia保护 sonarr.domain.com 2.但是,我们希望绕过 Authelia 来处理进出 Sonarr API 端点的流量。
          下面是规则(从上面的示例中提取):
          同样,请记住层次结构。我们希望绕过高于任何限制性规则,以便 Authelia 知道绕过此端点是第一位的。

          📎 参考文章

           
          💡
          有关Authelia安装或者使用上的问题,欢迎您在底部评论区留言,一起交流~
          Traefik 篇五:进阶的代理配置Traefik 篇三:Traefik的安装和配置
          Loading...