当前位置: 首页 > article >正文

Zitadel:开源身份认证与授权平台完全指南

Zitadel开源身份认证与授权平台完全指南背景身份认证是应用安全的第一道防线。现代应用通常需要用户注册登录、第三方社交登录、API 授权等身份管理功能。从零开发一套安全可靠的身份认证系统需要投入大量精力。使用成熟的身份认证服务商可以快速解决问题但数据隐私和成本控制又是新的顾虑。Zitadel 作为开源的身份认证平台提供了企业级的身份和访问管理能力同时支持完全自托管部署让团队完全掌控认证数据。本文分享 Zitadel 的部署与使用经验帮助技术团队构建安全、灵活的身份认证体系。一、项目概述与核心特性Zitadel 是一个开源的身份和访问管理平台GitHub Stars 数超过 10K。其设计目标是成为 Auth0、Okta 等商业产品的开源替代方案提供完整的企业级功能同时保持部署灵活性。标准协议支持Zitadel 原生支持 OAuth 2.0、OpenID Connect (OIDC)、SAML 2.0 等行业标准认证协议。这意味着任何支持这些标准协议的应用都可以安全地集成 Zitadel无需为每个应用单独开发认证逻辑。多因素认证 (MFA/2FA)内置对 TOTPGoogle Authenticator、Microsoft Authenticator 等、WebAuthn/FIDO2硬件安全密钥、邮件验证码等多种二次验证方式的支持。可以按组织或项目强制要求用户启用 MFA。无密码认证支持 WebAuthn 无密码登录用户可以使用指纹、面部识别或硬件密钥登录告别传统密码。社交登录开箱即用支持 Google、GitHub、Microsoft、SAML/SSO 等主流第三方登录方式降低用户注册门槛。企业级 SSO支持通过 SAML 2.0 或 OIDC 与企业身份提供商Active Directory、Okta、Azure AD 等集成实现企业单点登录。角色与权限管理提供细粒度的 RBAC基于角色的访问控制功能。支持定义角色、分配权限、控制资源访问级别。组织与项目隔离Zitadel 设计为多租户架构支持创建多个组织和项目每个组织可以独立管理用户、应用和配置。审计日志完整记录所有认证事件、用户操作和管理员行为便于安全审计和合规要求。提供 RESTful API 和 GraphQL API所有管理功能都可以通过 API 调用支持自动化运维和定制化集成。二、Docker Compose 部署教程环境准备Zitadel 的 Docker 部署需要服务器满足以下要求Docker Engine 24.0Docker Compose v2.x最低 2GB 内存推荐 4GB10GB 可用磁盘空间支持 Linux AMD64Zitadel 支持 PostgreSQL 作为数据库推荐使用与 Zitadel 官方 Docker Compose 配置。快速部署创建 Zitadel 专用目录mkdir-p~/zitadelcd~/zitadel创建docker-compose.yamlversion:3.8services:zitadel:image:ghcr.io/zitadel/zitadel:latestcontainer_name:zitadelhostname:zitadelports:-8080:8080-8081:8081volumes:-./data:/var/lib/zitadelenvironment:-ZITADEL_DATABASE_POSTGRES_HOSTpostgres-ZITADEL_DATABASE_POSTGRES_PORT5432-ZITADEL_DATABASE_POSTGRES_USERpostgres-ZITADEL_DATABASE_POSTGRES_PASSWORDzitadel_password-ZITADEL_DATABASE_POSTGRES_DBzitadel-ZITADEL_DATABASE_POSTGRES_SSL_MODEdisable-ZITADEL_FIRSTINSTANCE_ORG_MACHINE_USERNAMEadmin-ZITADEL_FIRSTINSTANCE_ORG_MACHINE_PASSWORDAdmin123-ZITADEL_FIRSTINSTANCE_ORG_NAMEInitialdepends_on:-postgresrestart:unless-stoppednetworks:-zitadel-networkpostgres:image:postgres:16-alpinecontainer_name:postgreshostname:postgresenvironment:-POSTGRES_USERpostgres-POSTGRES_PASSWORDzitadel_password-POSTGRES_DBzitadelvolumes:-./postgres-data:/var/lib/postgresql/datarestart:unless-stoppednetworks:-zitadel-networknetworks:zitadel-network:driver:bridge启动 Zitadel 服务dockercompose up-dZitadel 首次启动会自动初始化数据库约需等待 1 分钟。使用浏览器访问管理控制台http://服务器IP:8080gRPC APIhttp://服务器IP:8081生成安全的 Masterkey生产环境应使用随机生成的 Masterkey32 字节十六进制字符串# 生成 32 字节随机密钥openssl rand-hex32将生成的密钥添加到环境变量environment:-ZITADEL_MASTERKEYyour-generated-masterkey-here使用外部 PostgreSQL如果使用已有的 PostgreSQL 数据库服务修改数据库配置指向外部实例environment:-ZITADEL_DATABASE_POSTGRES_HOSTyour-postgres-host-ZITADEL_DATABASE_POSTGRES_PORT5432-ZITADEL_DATABASE_POSTGRES_USERyour-user-ZITADEL_DATABASE_POSTGRES_PASSWORDyour-password-ZITADEL_DATABASE_POSTGRES_DBzitadel三、快速入门与基础使用访问管理控制台首次访问 Zitadel 管理控制台浏览器访问http://服务器IP:8080使用初始化时设置的机器用户名admin和密码Admin123登录首次登录后会提示创建初始组织Organization创建第一个应用在 Zitadel 中注册需要认证的客户端应用进入「Projects」→「New Project」输入项目名称如「MyApp」创建应用点击项目 → 「Applications」→「New」选择应用类型Web传统 Web 应用使用 Session CookieAPI后端服务或 SPA使用 TokenNative桌面或移动应用SAML支持 SAML 协议的应用配置认证方式Authorization Code标准 OAuth2 授权码流程推荐用于 Web 应用Client Credentials客户端凭证模式用于服务间认证PKCE增强的安全授权码流程用于 SPA 和移动应用获取客户端凭据创建应用后保存以下信息用于应用集成# 应用配置Client ID:your-client-idClient Secret:your-client-secretAuth URL:http://服务器IP:8080/oauth/v2/authorizeToken URL:http://服务器IP:8080/oauth/v2/tokenUserinfo URL:http://服务器IP:8080/oidc/v1/userinfoLogout URL:http://服务器IP:8080/oidc/v2/logout集成到应用Node.js Express 应用示例安装依赖npminstallopenid-client passport集成代码示例const{Issuer}require(openid-client);asyncfunctionsetupAuth(){constissuerawaitIssuer.discover(http://服务器IP:8080);constclientnewissuer.Client({client_id:your-client-id,client_secret:your-client-secret,redirect_uris:[http://localhost:3000/callback],post_logout_redirect_uris:[http://localhost:3000],});returnclient;}// 登录路由app.get(/login,async(req,res){constclientawaitsetupAuth();consturlclient.authorizationUrl({scope:openid profile email,});res.redirect(url);});// 回调路由app.get(/callback,async(req,res){constclientawaitsetupAuth();consttokenSetawaitclient.callback(req.url);// 获取用户信息constuserinfoawaitclient.userinfo(tokenSet.access_token);console.log(User:,userinfo);res.send(登录成功);});Python Flask 应用示例安装依赖pipinstallauthlib requests集成代码示例fromauthlib.integrations.flask_clientimportOAuth oauthOAuth(app)oauth.register(namezitadel,client_idyour-client-id,client_secretyour-client-secret,server_metadata_urlhttp://服务器IP:8080/.well-known/openid-configuration,client_kwargs{scope:openid profile email})app.route(/login)deflogin():returnoauth.zitadel.authorize_redirect(redirect_uriurl_for(callback,_externalTrue))app.route(/callback)defcallback():tokenoauth.zitadel.authorize_redirect(redirect_uriurl_for(callback,_externalTrue))respoauth.zitadel.get(http://服务器IP:8080/oidc/v1/userinfo,tokentoken)user_inforesp.json()returnfUser:{user_info}四、高级功能与最佳实践多因素认证 (MFA) 配置Zitadel 支持多种 MFA 方式可以在组织或项目级别强制启用。启用 TOTP MFA进入「Settings」→「Login Registration」找到「Multi-factor Authentication」设置启用 TOTPTime-based One-Time Password保存设置用户登录后在个人资料中绑定 authenticator 应用用户登录后进入「My Security」点击「Add MFA」选择 TOTP使用 Google Authenticator 等应用扫描二维码输入验证码完成绑定强制 MFA管理员可以在组织级别强制用户使用 MFA进入「Organization Settings」→「Login Registration」启用「Force MFA」选择强制 MFA 的时机首次登录、每次登录、指定时间后社交登录配置Zitadel 支持配置第三方社交登录。GitHub 登录配置在 GitHub Developer Settings 创建 OAuth App设置回调 URLhttp://服务器IP:8080/ui/console/callback获取 Client ID 和 Client Secret在 Zitadel 中进入「Settings」→「Identity Providers」添加 GitHub 提供商填入凭据用户登录页面会出现 GitHub 登录选项。角色与权限管理Zitadel 的 RBAC 能力支持精细化的权限控制。创建角色进入「Projects」→「MyApp」→「Roles」点击「New Role」定义角色 ID 和显示名称添加角色描述分配权限进入「Users」或「Members」选择用户或添加新成员分配项目角色应用获取 Token 时可以请求特定角色consturlclient.authorizationUrl({scope:openid profile email,resource:urn:zitadel:project:myapp,// 项目标识});单点登录 (SSO) 配置企业用户可以通过 SSO 直接使用企业账号登录。SAML 2.0 SSO在 Zitadel 中创建 SAML Identity Provider获取 Zitadel 的 SAML 元数据 URL在企业 IdPOkta、Azure AD 等中配置新应用将 Zitadel 元数据提供给企业 IdP配置属性映射email、name 等配置完成后企业用户访问应用时会自动跳转到企业 IdP 进行认证。自定义登录页面Zitadel 允许自定义登录流程和界面样式。自定义样式通过设置 CSS 变量覆盖默认主题:root{--primary-color:#3B82F6;--background-color:#F3F4F6;}自定义文案可以覆盖默认的界面文案和错误消息。审计日志Zitadel 自动记录所有认证和管理事件。查看审计日志进入「Auditing」筛选时间范围、事件类型、操作者查看详细事件信息导出日志支持将日志导出为 CSV 格式用于分析点击「Export」选择时间范围和筛选条件下载 CSV 文件API 自动化Zitadel 提供完整的 API 用于自动化运维。获取 Service User Token创建 Machine User进入「Users」→「New」→「Machine User」创建 PATPersonal Access Token用户设置 → 「Tokens」→ 「New Token」保存 Token使用 PAT 调用管理 APIcurl-XGEThttp://服务器IP:8080/admin/v1/users\-HAuthorization: Bearer your-pat-token五、常见问题与解决方案Q1如何重置管理员密码如果忘记管理员密码可以通过命令行重置dockerexec-itzitadel zitadel rootkeyadd--usernameadmin这会生成一个新的管理员密钥用于恢复访问。Q2Client Secret 泄露怎么办立即轮换 Secret进入应用设置点击「Regenerate Secret」更新应用配置中的 Secret在「Security」→「Sessions」中可以查看所有活跃会话必要时可以撤销所有会话。Q3如何迁移 Zitadel 实例完整迁移步骤停止服务备份 PostgreSQL 数据库备份 Zitadel 数据目录在新环境恢复数据修改新环境的域名配置Q4支持高可用部署吗Zitadel 支持集群部署多个 Zitadel 实例共享同一个 PostgreSQL使用负载均衡器分发请求会话状态存储在数据库中无状态扩展建议配合健康检查和自动故障转移实现高可用。Q5如何对接已有用户库Zitadel 提供多种用户同步方案LDAP/AD 同步通过 LDAP 导入企业用户SCIM 协议支持标准 SCIM 2.0 进行用户配置自动化自定义 Webhook监听用户变更事件同步到外部系统六、总结Zitadel 作为开源身份认证平台的优秀代表提供了企业级 IAM 系统的完整功能同时支持完全自托管部署。通过 Docker Compose 可以快速搭建包含身份认证、授权管理、MFA、SSO 在内的完整认证体系。OAuth 2.0 和 OIDC 标准协议的原生支持使集成变得简单可靠。对于注重数据隐私、希望掌控认证基础设施的团队Zitadel 是构建安全身份认证体系的可靠选择。© 版权归无边界科技所有发表评论请注明出处。

相关文章:

Zitadel:开源身份认证与授权平台完全指南

Zitadel:开源身份认证与授权平台完全指南 背景 身份认证是应用安全的第一道防线。现代应用通常需要用户注册登录、第三方社交登录、API 授权等身份管理功能。从零开发一套安全可靠的身份认证系统需要投入大量精力。使用成熟的身份认证服务商可以快速解决问题&#x…...

如何快速安装kill-doc:免费文档下载的终极指南

如何快速安装kill-doc:免费文档下载的终极指南 【免费下载链接】kill-doc 看到经常有小伙伴们需要下载一些免费文档,但是相关网站浏览体验不好各种广告,各种登录验证,需要很多步骤才能下载文档,该脚本就是为了解决您的…...

windowns Ollama 下载,安装,本地部署大模型

一、相关链接 Ollama官网 https://ollama.com/ irm https://ollama.com/install.ps1 | iex paste this in PowerShell, or download Ollama 下载Ollama https://ollama.com/download 最新版本0.18.3 搜索模型 https://ollama.com/search 如搜索:deepseek&a…...

避开401和403:天地图API密钥在QGIS中配置的完整避坑指南

天地图API密钥在QGIS中的终极排错手册:从401到403的全面攻克 当你第一次尝试在QGIS中加载天地图服务时,那种期待与兴奋是难以言表的。但现实往往很骨感——地图窗口一片空白,或者弹出令人沮丧的401、403错误代码。作为一名GIS工程师&#xff…...

5步掌握ROFL播放器:从英雄联盟回放文件到深度分析实战指南

5步掌握ROFL播放器:从英雄联盟回放文件到深度分析实战指南 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 你是否曾遇到精彩…...

【OS】互斥锁和自旋锁的区别

阻塞行为互斥锁:加锁失败时,线程会进入阻塞状态,释放CPU资源,由操作系统调度其他线程执行。自旋锁:加锁失败时,线程会忙等待,持续循环检查锁的状态,不释放CPU资源。适用场景互斥锁&a…...

告别虚拟机!用ZYNQ7000和PYNQ 2.6.0打造一个能实时识别人脸的“智能摄像头”

从零构建基于ZYNQ7000的实时人脸识别系统:PYNQ实战指南 在边缘计算和物联网应用蓬勃发展的今天,将AI模型部署到嵌入式设备已成为工程师和开发者的必备技能。传统虚拟机方案虽然便于开发调试,但在实际部署时往往面临性能瓶颈和资源浪费的问题…...

5分钟搞定!Docker快速部署MQTT服务mosquitto(附手机APP测试指南)

5分钟极速搭建MQTT服务:DockerMosquitto实战全指南 MQTT协议作为物联网领域的"轻量级通信标准",正在重塑设备互联的底层逻辑。想象一下,当你需要快速验证一个智能家居原型,或是搭建工业传感器数据中转站时,传…...

新手避坑指南:用PHPStudy搭建DVWA靶场时,80端口被占用的3种解决方法

新手避坑指南:用PHPStudy搭建DVWA靶场时,80端口被占用的3种解决方法 在网络安全学习的道路上,DVWA(Damn Vulnerable Web Application)靶场无疑是一个极佳的实践平台。它模拟了各种常见的Web安全漏洞,让学习…...

保姆级教程:用Burp Suite Community 2024抓取DVWA本地请求(附证书配置避坑指南)

零基础实战:Burp Suite Community 2024本地抓包与DVWA渗透测试全指南 当你第一次尝试用Burp Suite拦截本地DVWA的请求时,大概率会遇到两个经典问题:浏览器显示"您的连接不是私密连接",或者Burp根本抓不到任何流量。这就…...

Image Signal Processing(ISP)-第二章-从Bayer到RGB:Demosaic算法详解与BMP编码实战

1. 从Bayer到RGB:Demosaic算法核心原理 第一次接触Bayer阵列数据时,我盯着那些红绿蓝相间的棋盘格直发懵——这玩意儿怎么变成正常照片?后来才明白,现代图像传感器的设计暗藏玄机。每个像素点只能捕获一种颜色信息,通过…...

就在2月5日!维普系统全面升级:查重库与AI算法双重施压,2026毕业季保姆级通关指南

正在熬夜肝论文的学弟学妹们,先别急着敲字,看这里。 就在2026年2月5日,维普公布论文检测系统完成了升级。这回可不是修几个Bug,换个好看界面这么简单,官方公告写的很明确,这次是专门针对现在的AIGC环境&am…...

OpenClaw飞书消息发送图片的坑:filePath 路径导致的显示差异

问题背景在使用 OpenClaw 的 message 工具向飞书发送本地图片时,遇到一个奇怪的问题:同一张图片,不同的保存路径会导致不同的显示效果。保存在 workspace 目录:图片直接显示预览保存在 /tmp 目录:图片显示为附件 &…...

Xray实战指南:从基础扫描到精准漏洞探测

1. Xray安全评估工具入门指南 第一次接触Xray时,我被它简洁的命令行界面和强大的扫描能力所震撼。作为一款由资深安全专家打造的开源工具,Xray在渗透测试领域已经成为了许多专业人士的"瑞士军刀"。与市面上那些需要复杂配置的商业化扫描器不同…...

开超市做门头都需要注意那几点

开超市的门头核心就一件事:远看醒目、近看放心、路人一眼知道是超市、城管物业都能过。 一、风格与定位(决定档次) 社区超市 简洁、干净、亲民、明亮 关键词:生活超市、便民超市、生鲜超市、便利店 生鲜 / 综合超市 偏生活化&…...

Gemini 应用登陆 Mac:免费下载,开启快捷集成的桌面 AI 体验!

Gemini 应用登陆 MacGemini 应用现已作为原生 macOS 应用推出,为用户在桌面端提供更快捷、更集成的 AI 帮助体验。它支持 macOS 15 及以上版本,用户可在 gemini.google/mac 免费下载该应用,直接在桌面获取 AI 协助。使用快捷键 Option Space…...

百度网盘秒传脚本深度解析:三步实现永久文件分享的创新革命

百度网盘秒传脚本深度解析:三步实现永久文件分享的创新革命 【免费下载链接】rapid-upload-userscript-doc 秒传链接提取脚本 - 文档&教程 项目地址: https://gitcode.com/gh_mirrors/ra/rapid-upload-userscript-doc 在数字信息爆炸的时代,文…...

4diacIDE IEC61499 开发环境编译实战:从源码到可执行文件的完整指南

1. 4diacIDE与IEC61499开发环境概述 第一次接触4diacIDE时,我被它强大的分布式控制系统开发能力所吸引。作为基于IEC61499标准的开源工具链,4diac主要由两部分组成:用于开发的IDE环境和用于运行的Forte平台。IDE基于Eclipse框架用Java开发&a…...

Burst传输技术解析:如何通过突发模式提升数据传输效率

1. 什么是Burst传输技术? 当你用手机看高清视频时,有没有想过为什么画面能流畅加载?这背后就有Burst传输技术的功劳。简单来说,Burst传输就像超市购物时用推车一次性拿货,而不是徒手来回跑多趟。这种技术通过连续批量传…...

RT-Thread下PTP协议同步精度优化指南:从30us到10MHz的进阶之路

RT-Thread下PTP协议同步精度优化指南:从30us到10MHz的进阶之路 在金融交易系统、5G基站等对时间同步精度要求极高的场景中,微秒级误差都可能导致严重后果。本文将带您深入探索RT-Thread实时操作系统下PTP协议的同步精度优化之道,从STM32内置方…...

URL扫描与SQL注入实战解析

问题解构 针对用户提出的“URL扫描的核心及反渗透攻击sql注入的方式”这一查询,我们需要将其拆解为两个核心部分进行深入剖析: URL扫描的核心技术:主要探讨在安全测试或攻击准备阶段,如何通过技术手段高效地发现目标系统的活跃页…...

PLC小白必看!用Codesys仿真6层电梯避坑指南(含免费工程文件)

PLC零基础实战:用Codesys仿真6层电梯的完整避坑手册 第一次打开Codesys时,面对满屏的梯形图和功能块,大多数新手都会感到无从下手。电梯控制作为工业自动化领域的经典案例,恰好能串联从基础语法到高级封装的完整知识链。本文将用最…...

模型性能评估框架EvalScope

EvalScope是由阿里巴巴魔搭社区(ModelScope)推出的开源模型评估与性能基准测试框架,专为大语言模型(LLM)和多模态模型提供统一、系统化的性能评估方案,支持从基础能力到复杂场景的全链路评估。 一、核心功能…...

DolphinScheduler任务管理避坑指南:停止、暂停操作背后的7个关键处理器与性能隐患

DolphinScheduler任务管理避坑指南:停止、暂停操作背后的7个关键处理器与性能隐患 在生产环境中,任务调度系统的稳定性直接影响着业务连续性。当我们面对一个运行中的流程实例需要紧急停止或暂停时,系统内部究竟发生了什么?为什么…...

Ai通识与基础-认识人工智能

认识人工智能智能产生的要素影响大模型智能的核心要素有三点:模型算法。首先是模型算法,现在的AI都是采用神经网络架构,你可以把它看做是AI的大脑,是决定AI是否”聪明”的基础。海量数据。AI也是一样,要想让AI产生智慧…...

IBM与联想服务器ServerGuide:一站式下载与版本兼容性全解析

1. ServerGuide工具到底是什么? 第一次接触IBM和联想服务器的朋友,可能会被各种安装配置步骤搞得头大。这时候ServerGuide就像个贴心的装机助手,它能自动识别你的服务器型号,帮你把操作系统、驱动程序和必要组件一次性装好。我十年…...

Windows和Office激活难题?3个简单步骤让你告别烦恼

Windows和Office激活难题?3个简单步骤让你告别烦恼 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统弹出的激活提醒而头疼吗?Office突然变成只读模式&am…...

谁将赢得2026年菲尔兹奖获?

目录前言热门人选什么是菲尔兹奖?参考文献前言 2026年国际数学家大会(ICM)将于今年夏天在美国费城举办,备受瞩目的菲尔兹奖也将在大会期间会颁发,届时将会有2至4名年龄不超过40岁的有卓越贡献的数学家奖分享该奖项&am…...

PyTorch加载.pth文件报错?别慌!教你区分‘整个模型’和‘仅参数’的两种加载方式

PyTorch模型加载实战:从.pth文件解析到迁移学习避坑指南 当你从GitHub下载了一个PyTorch预训练模型,满心欢喜地准备在自己的项目中使用时,突然遇到KeyError: missing_keys或RuntimeError: Error(s) in loading state_dict这类错误——这种场景…...

终极指南:如何免费解锁Cursor Pro功能,无限使用AI编程助手

终极指南:如何免费解锁Cursor Pro功能,无限使用AI编程助手 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve r…...