项目标题与描述
Authelia是一个开源的认证和授权服务器,专注于为应用程序提供双因素认证(2FA)和单点登录(SSO)功能。通过Web门户,Authelia能够作为身份和访问管理(IAM)系统,确保应用程序的安全性。项目支持OpenID Connect 1.0协议,并已通过OpenID认证,具备广泛的集成能力。
功能特性
- 双因素认证:支持TOTP、WebAuthn等多种双因素认证方式,提升账户安全性。
- 单点登录:提供统一的登录门户,简化用户访问多个应用的流程。
- OpenID Connect提供者:作为认证提供者,支持与第三方应用集成。
- 灵活的访问控制:基于规则策略,支持按域名、资源、网络等条件进行细粒度授权。
- 多后端支持:支持LDAP、文件等多种用户存储后端,适应不同环境需求。
- 高度可配置:通过YAML配置文件,可自定义认证策略、密码策略等。
安装指南
系统要求
- Linux/FreeBSD系统(macOS目前不支持开发工作流)
- Go 1.18+
- Node.js和pnpm(用于前端构建)
- Docker和Docker Compose(用于容器化部署)
安装步骤
-
克隆项目仓库:
git clone https://github.com/authelia/authelia.git cd authelia
-
运行引导脚本以安装依赖:
./bootstrap.sh
-
构建项目:
authelia-scripts build
-
使用Docker构建镜像:
authelia-scripts docker build
依赖项
- 后端:Go模块依赖(详见
go.mod
) - 前端:Node.js和pnpm(依赖项在
web/package.json
中定义)
使用说明
基本配置
Authelia通过YAML文件进行配置。以下是一个最小配置示例:
server:host: 0.0.0.0port: 9091authentication_backend:file:path: /config/users_database.ymlaccess_control:default_policy: denyrules:- domain: "secure.example.com"policy: two_factor
启动服务
使用以下命令启动Authelia服务:
authelia --config /path/to/configuration.yml
API使用
Authelia提供RESTful API用于集成。例如,检查用户权限:
curl -X POST https://auth.example.com/api/verify \-H "Content-Type: application/json" \-d '{"username": "user", "password": "pass"}'
核心代码
主入口点
主函数初始化并执行根命令:
package mainimport ("os""github.com/authelia/authelia/v4/internal/commands"
)func main() {if err := commands.NewRootCmd().Execute(); err != nil {os.Exit(1)}
}
认证提供者接口
定义用户提供者的核心接口:
package authenticationtype UserProvider interface {CheckUserPassword(username string, password string) (valid bool, err error)GetDetails(username string) (details *UserDetails, err error)UpdatePassword(username string, newPassword string) (err error)Close() (err error)
}
访问控制规则
实现基于规则的访问控制逻辑:
package authorizationtype AccessControlRule struct {Domains []AccessControlDomainResources []AccessControlResourcePolicy Level
}func (acr *AccessControlRule) IsMatch(subject Subject, object Object) (match bool) {if !acr.MatchesDomains(subject, object) {return false}// 其他匹配逻辑...return true
}
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
公众号二维码