点击
上方蓝字关注我
照例先放上项目地址:
https://github.com/zitadel/zitadel
ZITADEL 是一个开源的身份和访问管理(Identity and Access Management, IAM)平台,这东西在国外的产品可以类比于 Okta 和 Auth0,国内我只用过 Authing 家的产品,不过无论是 Okta 还是 Authing 都要花钱买呀,而 ZITADEL 功能足够用,也支持私有部署(也有 Cloud-based 版本)全免费,社区也很活跃。
先说说 ZITADEL 有啥功能吧!常见的身份认证(用户名密码啊、OAuth2啊、SAML 等都支持)、MFA、RBAC、自助服务(有一个自助的 Portal 提供给用户,支持他们自助修改个人信息之类),最重要的是 ZITADEL 还有 API 和 SDK,而且文档很详尽!
最大的优势:开源免费!当然了,开源免费这个优势是建立在产品靠谱的前提,还有一些优势,比如说 ZITADEL 在设计时就考虑到了复杂的多租户架构,而且它还具备处理客户身份管理(CIAM)所需的几乎全部功能,我简单总结了一下它的优势如下:
API 优先方法
多租户认证和访问管理
采用事件溯源模式,因此具有比较靠谱的审计追踪功能
身份验证页面的简单定制,例如可以针对自身改 Logo 啊、改提示词等等
为用户提供自助服务(例如改个人信息啊改密码等,用户有一个面板可以很方便的修改)
存储使用 CockroachDB 或 Postgres 两种 DB
Docker Compose 文件如下:
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_EXTERNALSECURE=false'
depends_on:
db:
condition: 'service_healthy'
ports:
- '8080:8080'
db:
restart: 'always'
image: postgres:16-alpine
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=zitadel
networks:
- 'zitadel'
healthcheck:
test: ["CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres"]
interval: '10s'
timeout: '30s'
retries: 5
start_period: '20s'
ports:
- '5432:5432'
networks:
zitadel:
启动:
使用 Dockers 本地部署之后,我们访问如下 url:
http://localhost:8080/ui/console
使用默认用户名密码登进系统:
username: zitadel-admin@zitadel.localhost
password: Password1!
如下:
我们像用 SAML 验证,那就创建应用来测试:
点击 Continue 之后如下:
这界面就和我们平时使用到的商业化 IDP 一模一样,一步一步设置好 Redirect URLs 最后测试即可。
文档给出了以上框架集成 ZITADEL 的示例代码:
https://zitadel.com/docs/sdk-examples/introduction
API文档如下:
https://zitadel.com/docs/category/apis/resources/auth/policies
ZITADEL 可以通过 APIs 支持很多操作,例如很关键的用户导入与迁移:
https://zitadel.com/docs/apis/resources/admin/admin-service-import-data
批量导入的 Base URL 是 :
https://$CUSTOM-DOMAIN/admin/v1
body 示例:
{
"timeout": "10m",
"data_orgs": {
"orgs": [
{
"orgId": "104133391254874632",
"org": {
"name": "ACME"
},
"humanUsers": [
{
"userId": "104133391271651848",
"user": {
"userName": "test9@test9",
"profile": {
"firstName": "Road",
"lastName": "Runner",
"displayName": "Road Runner",
"preferredLanguage": "de"
},
"email": {
"email": "[email protected]",
"isEmailVerified": true
},
"hashedPassword": {
"value": "$2a$14$aPbwhMVJSVrRRW2NoM/5.esSJO6o/EIGzGxWiM5SAEZlGqCsr9DAK",
"algorithm": "bcrypt"
}
}
},
{
"userId": "120080115081209416",
"user": {
"userName": "testuser",
"profile": {
"firstName": "Test",
"lastName": "User",
"displayName": "Test User",
"preferredLanguage": "und"
},
"email": {
"email": "[email protected]",
"isEmailVerified": true
},
"hashedPassword": {
"value": "$2a$14$785Fcdbpo9rn5L7E21nIAOJvGCPgWFrZhIAIfDonYXzWuZIKRAQkO",
"algorithm": "bcrypt"
}
}
},
{
"userId": "145195347319252359",
"user": {
"userName": "wile@test9",
"profile": {
"firstName": "Wile E.",
"lastName": "Coyote",
"displayName": "Wile E. Coyote",
"preferredLanguage": "en"
},
"email": {
"email": "[email protected]"
}
}
}
]
}
]
}
}
除了迁移用户之外,ZITADEL 还支持密码迁移,不过这里需要 ZITADEL 支持你导入密码的哈希算法,如下:
argon2i / id
bcrypt (Default)
md5
scrypt
pbkdf2
操作文档如下,很简单,有示例代码滴:
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_EXTERNALSECURE=false'
depends_on:
db:
condition: 'service_healthy'
ports:
- '8080:8080'
db:
restart: 'always'
image: postgres:16-alpine
environment:
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=postgres
- POSTGRES_DB=zitadel
networks:
- 'zitadel'
healthcheck:
test: ["CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres"]
interval: '10s'
timeout: '30s'
retries: 5
start_period: '20s'
ports:
- '5432:5432'
networks:
zitadel:
0
总的来说,ZITADEL 作为开源且免费的工具,已经能提供很全面的身份认证、授权和管理等功能了,而且这些功能对于绝大部分中小型企业来说是绰绰有余的;不仅支持私有化部署,还可以通过 API 和 SDK 与应用无缝集成,我认为假设你们公司正在找一个免费开源的 IAM 解决方案,可以试一试 ZITADEL 咯,真的很实用呀!
点点赞 点点关注 点点文末广告 抱拳了家人们
创作不易
关注一下
帮忙点点文末广告
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...