跳转至内容

Authelia

来自 ArchWiki

Authelia 是一个开源的身份验证和授权服务器,通过 Web 门户为应用程序提供双因素身份验证和单点登录 (SSO) 功能。它作为 nginxCaddyTraefikHAProxy 等反向代理的伴侣,用于强制执行访问控制策略。

安装

注意 Authelia 需要反向代理才能运行。有关集成指南,请参阅 上游文档

安装以下软件包之一

这两个软件包都会创建 authelia 系统用户和组。

配置

软件包提供的结构

软件包会创建 /etc/authelia/ 用于存放配置文件,并安装 tmpfiles.d 配置来管理权限。

/usr/lib/tmpfiles.d/authelia.tmpfiles.conf
#Type Path                                    Mode User       Group      Age         Argument
Z     /etc/authelia/*                         0640 authelia   authelia   -           -
e     /etc/authelia                           0755 authelia   authelia   -           -
/usr/lib/tmpfiles.d/authelia.tmpfiles.config.conf
#Type Path                                    Mode User       Group      Age         Argument
f     /etc/authelia/configuration.yml         0440 authelia   authelia   -           -
Z     /etc/authelia/configuration.*.yml       0440 authelia   authelia   -           -
Z     /etc/authelia/configuration.yml.*       0440 authelia   authelia   -           -

将您的主要 Authelia 配置放在 /etc/authelia/configuration.yml。有关配置选项,请参阅 Authelia 文档

Authelia 支持多种存储提供商和身份验证后端选项。简单的开发设置可以使用 sqlite3 作为存储,并使用 yaml 文件作为用户数据库。这种基于文件的设置不支持高可用性场景。生产场景应使用 RDBMS(如 Postgresql)和 LDAP 服务器来支持高可用性。

注意 本节描述的是基于文件的开发设置。请勿在生产环境中使用此方法。

遵循 文件系统层次标准,如果打算使用 Authelia 的基于文件的存储选项,建议将配置与运行时应用程序数据分开。

  • 配置 (静态): /etc/authelia/
  • 应用程序数据 (运行时状态): /var/lib/authelia/

设置数据目录

创建数据目录

# mkdir -p /var/lib/authelia
# chown authelia:authelia /var/lib/authelia
# chmod 0750 /var/lib/authelia

要使用 SQLite 作为存储,请在 /etc/authelia/configuration.yml 中配置数据库路径。

/etc/authelia/configuration.yml
storage:
  local:
    path: /var/lib/authelia/db.sqlite3

要使用基于文件的用户数据库,您也可以将其放在 /var/lib/authelia/

/etc/authelia/configuration.yml
authentication_backend:
  file:
    path: /var/lib/authelia/users_database.yml

使用 tmpfiles.d 进行安全加固

为确保跨重启和系统更新期间正确维护权限,请为 /var/lib/authelia/ 创建一个 tmpfiles.d 配置。

/etc/tmpfiles.d/authelia.conf
#Type Path                                    Mode User       Group      Age         Argument

# Application data directory
d     /var/lib/authelia                       0750 authelia   authelia   -           -
z     /var/lib/authelia/db.sqlite3            0640 authelia   authelia   -           -
z     /var/lib/authelia/users_database.yml    0640 authelia   authelia   -           -
注意 使用小写 z 可以在不递归的情况下设置特定文件的权限,避免目录遍历问题。

立即应用配置

# systemd-tmpfiles --create /etc/tmpfiles.d/authelia.conf

用法

启动/启用 authelia.service

检查服务状态

# systemctl status authelia

查看日志

# journalctl -u authelia -f

故障排除

权限被拒绝错误

如果 Authelia 在启动时因权限错误而失败,请确保

  1. authelia 用户对配置文件具有读取权限。
  2. authelia 用户对数据目录具有读取/写入权限。
  3. 目录权限包括目录的执行位 (+x)。

手动修复权限

# chown -R authelia:authelia /etc/authelia /var/lib/authelia
# chmod 0750 /etc/authelia /var/lib/authelia
# chmod 0640 /etc/authelia/configuration.yml
# chmod 0640 /var/lib/authelia/*

然后重新应用 tmpfiles 配置。

# systemd-tmpfiles --create

配置验证

在启动服务之前验证您的配置。

# authelia validate-config --config /etc/authelia/configuration.yml

参见