IAM-Authelia ¶
#IAM #SSO #统一身份 #oauth2
Authelia 是一款轻量级的SSO身份认证程序,支持SSO。
简单部署:
安装依赖 ¶
# Ubuntu/Debian
sudo apt update
sudo apt install -y redis-server nginx wget unzip
# CentOS/RHEL
sudo yum install -y epel-release
sudo yum install -y redis nginx wget unzip
sudo systemctl enable --now redis
检查redis 是否运行
systemctl status redis
redis-clij
# 创建一个文件夹存放相关数据
mkdir -p authelia.app/{storage,config,bin}
其中:
- NGINX不一定需要,用别的反代程序也可以,比如我这用了zoxary
- redis 存会话信息的
下载二进包 ¶
对应相应系统下载对应的二进包,通常选择: authelia-xxxx-amd64.tar.gz 的版本
curl -x http://localhost:10002 -LO https://github.com/authelia/authelia/releases/download/v4.39.15/authelia-v4.39.15-linux-amd64.tar.gz
tar xzvf authelia-xxx.tar.gz
mv authelia authelia.app/bin
进行初始配置 ¶
以下操作都在 authelia.app 这个主目录下进行。
初始化各种所需的KEY,加密数据用的
openssl rand -base64 32 | tee storage/session_secret
openssl rand -base64 32 | tee storage/jwt_secret
openssl rand -base64 32 | tee storage/storage_encryption_key
创建一个基本配置文件 config/config.yml
server.address: 127.0.0.1:9091
log:
level: info
theme: dark
identity_validation.reset_password.jwt_secret: storage/jwt_secret
default_redirection_url: https://auth.ovwx.org
totp:
issuer: ovwx.org
authentication_backend:
file:
path: storage/users.yml
password:
algorithm: argon2id
iterations: 1
salt_length: 16
parallelism: 8
memory: 64
access_control:
default_policy: deny
rules:
- domain: "auth.ovwx.org"
policy: bypass
- domain: "*.ovwx.org"
policy: one_factor
subject: "group:admins"
- domain: "xyz.ovwx.org"
policy: two_factor
session:
name: authelia_session
secret: storage/session_secret
expiration: 1h
inactivity: 5m
domain: ovwx.org
redis:
host: 127.0.0.1
port: 6379
database_index: 0
regulation:
max_retries: 5
find_time: 2m
ban_time: 5m
storage:
encryption_key: storaget/storage_encryption_key
local:
path: storage/db.sqlite3
notifier:
filesystem:
filename: storage/notifications.txt
创建一个默认用户:storage/users.yml
users:
fnch:
#disabled: true
displayname: "admin"
password: "encrypted password"
email: [email protected]
groups:
- admins
- dev
其中:
- password 应该使用 'bin/authelia crypto hash generate' 进行生成,将生成的密码在文件中进行替换
编写一个启动脚本
#!/bin/bash
[ $UID -ne 0 ] && {
exec sudo "$0" "$@"
exit $?
}
WorkDir=$(cd $(dirname $0);pwd)
APP=bin/authelia
pushd $WorkDir
systemctl reset-failed
systemd-run -p User=hsiaotien \
-p WorkingDirectory=$WorkDir \
-p Group=hsiaotien \
-p NoNewPrivileges=yes \
-p ProtectSystem=full \
-p ReadOnlyPaths=/home/hsiaotien \
-p ReadWritePaths=$WorkDir \
-u authelia \
./$APP --config config/config.yml
注意,下载的二进制包中也包含 service unit文件,用那个也可以,只是用普通用户运行的话,这个比较方便。运行脚本
./service.sh
此时系统会监听在 127.0.0.1 9091 端口,也可以监听在全部IP地址上,修改配置文件的,server.address 配置项即可。
在你使用的反向代理上配置以下项目,注意,最好在反向代理上配置好SSL证书之类的,这样做好映射就可以用了
auth.xxx.org -> 127.0.0.1:9091
做完后直接访问:https://auth.xxx.org 并使用配置在 users.yml 中的用户和密码访问就可以了
还有一个注意事项 ¶
初始登录时,有可能还需要绑定二次认证密码,但这个二次认证的密码初始化时,系统需要你接收一个通知,而authelia配置项中有一个就是通知设置。配置文件中设置为 filesystem,此时我们需要去查看 notifier设定的那个文件(上面的配置文件是 storage/notifications.txt),初始验证时的验证码会写入那个文件里面。用里面的验证码可以添加OTP设备。
评论
请登录后发表评论。
暂无评论。成为第一个评论者!