点击
上方蓝字关注我
照例先放上项目地址:
https://github.com/zitadel/zitadelZITADEL 是一个开源的身份和访问管理(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-alpineenvironment:- POSTGRES_USER=postgres- POSTGRES_PASSWORD=postgres- POSTGRES_DB=zitadelnetworks:- 'zitadel'healthcheck:test: ["CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres"]interval: '10s'timeout: '30s'retries: 5start_period: '20s'ports:- '5432:5432'networks:zitadel:
启动:
使用 Dockers 本地部署之后,我们访问如下 url:
http://localhost:8080/ui/console使用默认用户名密码登进系统:
username: zitadel-admin@zitadel.localhostpassword: Password1!
如下:
我们像用 SAML 验证,那就创建应用来测试:
点击 Continue 之后如下:
这界面就和我们平时使用到的商业化 IDP 一模一样,一步一步设置好 Redirect URLs 最后测试即可。
文档给出了以上框架集成 ZITADEL 的示例代码:
https://zitadel.com/docs/sdk-examples/introductionAPI文档如下:
https://zitadel.com/docs/category/apis/resources/auth/policiesZITADEL 可以通过 APIs 支持很多操作,例如很关键的用户导入与迁移:
https://zitadel.com/docs/apis/resources/admin/admin-service-import-data批量导入的 Base URL 是 :
https://$CUSTOM-DOMAIN/admin/v1body 示例:
{"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 / idbcrypt (Default)md5scryptpbkdf2
操作文档如下,很简单,有示例代码滴:
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-alpineenvironment:- POSTGRES_USER=postgres- POSTGRES_PASSWORD=postgres- POSTGRES_DB=zitadelnetworks:- 'zitadel'healthcheck:test: ["CMD-SHELL", "pg_isready", "-d", "zitadel", "-U", "postgres"]interval: '10s'timeout: '30s'retries: 5start_period: '20s'ports:- '5432:5432'networks:zitadel:0
总的来说,ZITADEL 作为开源且免费的工具,已经能提供很全面的身份认证、授权和管理等功能了,而且这些功能对于绝大部分中小型企业来说是绰绰有余的;不仅支持私有化部署,还可以通过 API 和 SDK 与应用无缝集成,我认为假设你们公司正在找一个免费开源的 IAM 解决方案,可以试一试 ZITADEL 咯,真的很实用呀!
点点赞 点点关注 点点文末广告 抱拳了家人们
创作不易
关注一下
帮忙点点文末广告
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……




还没有评论,来说两句吧...