开源SSO-ZITADEL
提供开箱即用的广泛功能。包括具有品牌自定义的多租户、安全登录、自助服务、OpenID Connect、OAuth2.x、SAML2、带 FIDO2 的无密码(包括通行密钥)、OTP、U2F 和无限制的审计跟踪。
这里就不多废话了,直接说明如何快速搭建环境。
部署
简要说明大致流程,前提条件需要安装Docker、Docker Compose环境,详情请参考Ubuntu安装Docker。
- 搭建数据库环境
- 创建
ZITADEL
的专属账号和数据库 - 初始化
ZITADEL
服务 - 启动
ZITADEL
服务
version: '3.8'
services:
zitadel:
restart: 'always'
networks:
- 'zitadel'
image: 'ghcr.io/zitadel/zitadel:latest'
command: 'start-from-init --masterkey "MasterkeyNeedsToHave32Characters" --tlsMode disabled'
environment:
- 'ZITADEL_DATABASE_POSTGRES_HOST=db'
- 'ZITADEL_DATABASE_POSTGRES_PORT=5432'
- 'ZITADEL_DATABASE_POSTGRES_DATABASE=zitadel'
- 'ZITADEL_DATABASE_POSTGRES_USER_USERNAME=zitadel'
- 'ZITADEL_DATABASE_POSTGRES_USER_PASSWORD=zitadel'
- 'ZITADEL_DATABASE_POSTGRES_USER_SSL_MODE=disable'
- 'ZITADEL_DATABASE_POSTGRES_ADMIN_USERNAME=postgres'
- 'ZITADEL_DATABASE_POSTGRES_ADMIN_PASSWORD=postgres'
- 'ZITADEL_DATABASE_POSTGRES_ADMIN_SSL_MODE=disable'
- 'ZITADEL_FIRSTINSTANCE_ORG_HUMAN_USERNAME=Cikaros@qq.com' #管理员账号
- 'ZITADEL_FIRSTINSTANCE_ORG_HUMAN_PASSWORD=xxxxxxxxxx' #管理员密码
- 'ZITADEL_EXTERNALSECURE=false'
depends_on:
db:
condition: 'service_healthy'
ports:
- '8080:8080'
db:
restart: 'always'
image: postgres:16-alpine
environment:
- POSTGRES_USER=postgres #超管账号
# - POSTGRES_PASSWORD=xxxxxxxxxx #超管密码
# - POSTGRES_DB=zitadel
networks:
- 'zitadel'
healthcheck:
test: ["CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres"]
interval: '10s'
timeout: '30s'
retries: 5
start_period: '20s'
networks:
zitadel:
注:请在部署前自行修改变量位置的内容,管理员账号密码请自行设置
MasterkeyNeedsToHave32Characters:$(openssl rand -base64 32 | head -c 32)
Postgres 配置
这里假设 Postgres 服务已经创建,在 Docker 容器中的容器名为 Postgres
首先需要登录到容器内部进行操作(主要是因为外部没有对应的指令可用)
#进入容器
sudo docker exec -it Postgres bash
#切换数据库用户
su postgres
之后则进行用户和数据库的创建,并为其设置权限
#创建用户
createuser -D -R -S zitadel
#创建数据库并归属给上一步创建的用户
createdb -O zitadel -E "UTF-8" -l "C" -T template0 -e zitadel
#为其配置Public Schema
grant all on schema public to zitadel;
开源SSO-ZITADEL
https://blog.cikaros.top/doc/a28e181a.html