大家好,今天给大家分享一个开源项目Authelia,旨在为Web应用提供安全、灵活的单点登录(SSO)和多因素认证(MFA)解决方案。作为一款轻量级的身份验证与授权服务器,Authelia通过集成反向代理和细粒度访问控制,帮助用户构建高安全性的企业内部系统或互联网应用。


项目概述

Authelia 是一款开源的认证与授权服务器,核心功能是提供单点登录(SSO)和多因素认证(MFA),适用于保护Web应用的安全访问。它通过反向代理(如Nginx、Traefik)实现请求的拦截和权限验证,支持灵活的访问控制规则,并能与企业现有的用户目录(如LDAP、数据库)集成。

核心定位

• 安全性:通过双因素认证、密码重置验证、防暴力破解等机制,抵御未授权访问。

• 易用性:提供统一的登录门户,用户只需登录一次即可访问多个关联应用。

• 轻量级:支持容器化部署(Docker、Kubernetes),适合云原生环境。

架构示意图

Authelia位于反向代理后端,所有外部请求需先通过其认证流程。验证通过后,反向代理将请求转发至目标应用,否则返回拒绝或重定向至登录页面。


项目特点

1.多因素认证(MFA)支持

• 支持TOTP(基于时间的一次性密码)、WebAuthn(硬件密钥/U2F)、移动推送等多种二次验证方式。

• 管理员可按策略为不同应用分配一因子(仅密码)或二因子认证。

2.细粒度访问控制

• 基于用户、用户组、域名、请求路径、HTTP方法等条件定义访问规则。

• 示例规则:仅允许“财务组”成员通过HTTPS访问/payroll路径。

3.高可用性设计

• 支持Redis作为分布式键值存储,避免单点故障。

• 可集成MySQL、PostgreSQL等数据库存储用户信息。

4.云原生友好

• 提供Helm Chart(Beta版),支持在Kubernetes集群中快速部署。

• 兼容主流Ingress控制器(Nginx、Traefik、HAProxy)。

5.安全增强功能

• 密码重置时需通过邮箱验证身份。

• 多次登录失败后自动封禁IP,防止暴力破解。

6.开源与社区驱动

• 遵循Apache 2.0协议,代码透明可审计。

• 社区通过Matrix、Discord提供技术支持,核心团队响应活跃。


应用场景

1.企业内部系统保护

适用于ERP、CRM、内部文档平台等,确保只有员工通过SSO和MFA访问。

2.多租户SaaS平台

通过用户组规则隔离不同租户的数据访问权限。

3.云原生微服务架构

在Kubernetes集群中作为统一认证网关,简化微服务间的权限管理。

4.高安全要求的行业

金融、医疗等领域中,双因素认证和细粒度控制可满足合规性要求。


安装使用

安装

1.Docker Compose快速体验

• Local模式(仅测试):

git clone https://github.com/authelia/authelia
cd authelia/compose/local
docker-compose up -d

本地修改hosts文件添加域名(如auth.example.com),访问https://auth.example.com即可体验。

• Lite模式(生产简化版):

需配置真实域名和Let’s Encrypt证书,适合小规模部署。

2.Kubernetes部署

• 使用Helm Chart(Beta):

helm repo add authelia https://charts.authelia.com
helm install authelia authelia/authelia -f values.yaml

需预先配置Ingress和证书(如Cert-Manager)。

3.配置要点

• 用户存储:默认使用文件存储,生产环境建议切换至MySQL或LDAP。

• 证书:Local模式使用自签名证书,生产环境需替换为Let’s Encrypt或企业CA证书。


使用示例

场景:保护一个内部Wiki系统

  1. 配置反向代理(Nginx)
    在Nginx配置中添加以下规则,将所有请求转发至Authelia验证:

    location / {
        auth_request /authelia-auth;
        error_page 401 =302 https://auth.example.com?rd=$request_uri;
    }
    location /authelia-auth {
        internal;
        proxy_pass http://authelia:9091/api/verify;
    }
  2. 定义访问规则
    在Authelia的configuration.yml中设置规则:

    access_control:
      default_policy: deny
      rules:
        - domain: wiki.example.com
          policy: two_factor
          subject:
            - group:employees
        - domain: public.example.com
          policy: bypass

    此规则要求wiki.example.com仅允许employees组成员通过双因素认证访问,而public.example.com无需认证。

  3. 用户登录流程
    用户首次访问Wiki时,跳转至Authelia门户,输入账号密码并完成TOTP验证,即可自动进入系统。


总结

Authelia凭借其开源、轻量、安全的特性,成为企业构建统一身份认证平台的优选方案。无论是本地化部署还是云原生环境,它都能通过灵活的规则和强大的扩展性满足复杂场景需求。对于开发者而言,其活跃的社区和详尽的文档降低了上手门槛;对于运维团队,高可用设计和安全审计支持则保障了长期稳定性。

注意事项

• 版本升级:Authelia处于活跃开发阶段,升级前需阅读Release Notes以应对破坏性变更。

• 安全审计:尽管项目已通过社区代码审查,高敏感场景仍建议结合专业渗透测试。

项目地址

https://github.com/authelia/authelia