
导语:今年的 GSoC 已近尾声,在这场代码开发盛宴中,Apache DolphinScheduler 的开发者们积极参与,取得了一项对用户意义重大的成果——引入通用 OIDC 认证,实现无缝安全访问。令人欣喜的是,该成果出自一位印度开发者之手。在项目导师 Gallardot 与向梓豪(SbloodyS)的精心指导下,这一成果成功在 Apache DolphinScheduler 中落地。今天,就让我们一同深入了解通用 OIDC 认证的开发历程,以及它将给用户带来哪些积极影响。
在大型企业里,管理用户身份始终是个难题,得在安全与用户便捷之间找到平衡。对于像 Apache DolphinScheduler 这样的企业级工作流编排平台,强大且灵活的认证机制可不是锦上添花,而是刚需。
以前,Apache DolphinScheduler 提供了几种登录方式,像密码登录、LDAP,还有 Casdoor SSO。但这些方法都有短板,比如说过度依赖 Casdoor 项目,或者 OAuth 的实现不够灵活,跟各种企业身份系统集成的时候特别麻烦。
作为我 2025 年谷歌暑期代码计划(Google Summer of Code)的项目成果,我很高兴给大家介绍一个解决方案:全新的通用 OpenID Connect(OIDC)认证机制。它简化并升级了访问 DolphinScheduler 的方式,让 DolphinScheduler 真正契合企业需求。这个实现巧妙地运用了现有的 Nimbus SDK,还精心设计成能与当前数据库架构无缝衔接,保证所有用户都能轻松完成升级。

认证架构前后对比
不妨把 OIDC 想象成通用的数字护照。就好比你不用为每个要用的服务(比如 DolphinScheduler)单独创建账户,只要拿出身份提供商(像谷歌、Keycloak,或者公司内部的登录系统)给的可信护照,就能证明自己的身份。
从技术角度讲,OIDC 是现代安全标准,在 OAuth 2.0 协议基础上构建了身份验证层。OAuth 2.0 解决的是授权问题(你能做什么),而 OIDC 解决的是身份验证问题(你是谁)。
这个机制对 Apache DolphinScheduler 来说特别合适,原因如下:

OIDC 数字护照
我做的这个谷歌暑期代码计划项目给 DolphinScheduler 带来了好几个超实用的企业级特性。
OIDC 集成采用标准的授权码流程,保证身份验证又安全又靠谱。

使用 OIDC 的 DolphinScheduler 简化登录流程图
配置 OIDC 很简单。下面是用 Keycloak 和 Dex Idp 的快速指南。
下面是用流行的开源身份提供商 Keycloak 的快速指南。

http://{api - host:port}/dolphinscheduler/login/oauth2/code/{provider - id}。要是本地搭建的环境,就是 http://localhost:12345/dolphinscheduler/login/oauth2/code/keycloak。

要是想测试,可以用 dolphinscheduler - api - test/dolphinscheduler - api - test - case/src/test/resources/docker/oidc - login/realm - export.json 这个预配置好的文件,一键启动 Keycloak 实例,所有必要设置都已经弄好了!
dolphinscheduler - api/src/main/resources/application.yaml 文件。
下面看看怎么配置 Dex,另一个很火的 OIDC 身份提供商,感受一下这个系统的灵活性。
staticClients 列表里。示例 Dex 配置文件 config.yaml:

application.yaml 里加一个新的提供商条目。
开启 OIDC 的 DolphinScheduler 登录页面
两种方式的用户流程都很顺畅:
这个项目让我学到了超多,核心目标只有一个:为企业打造一个真正通用的认证解决方案。
我先深入研究了 Apache DolphinScheduler 的架构,还搞定了本地环境搭建。在导师们的悉心指导下,我采用后端优先的方法,借助强大的 Nimbus SDK 打下坚实基础,保证 OIDC 核心逻辑既可靠又符合标准。
一个关键设计决策是把身份提供商设为唯一的权限数据源。这对实现动态角色同步功能至关重要,每次登录都重新评估用户权限,不只是第一次登录,这样就能保证访问控制始终是最新的。这就需要更新核心用户服务,保证用户权限始终跟中央身份系统一致。
验证这个特性的灵活性和可靠性是下一个大挑战。质量保证是重中之重,我用了一套多层策略来解决:
后端工作做完后,我还开发了完整的前端体验,实现了 API 调用,创建了响应式 UI 组件,让用户能用配置好的 OIDC 提供商登录。
最后,为了方便未来开发和社区推广,我写了详细的文档。包括用 Keycloak 进行本地测试的分步开发指南,还有企业集成的详细配置示例,这些现在都已经是官方 DolphinScheduler 文档的一部分了。
这个项目能成功,多亏了我的超棒的导师 Gallardot 和 向梓豪(SbloodyS),整个夏天他们给了我特别多宝贵的指导、反馈和支持。我也特别感谢 Apache DolphinScheduler 社区和谷歌暑期代码计划给我这个难得的机会。
通用 OIDC 认证的引入对 Apache DolphinScheduler 来说是一大进步,给各方都带来了实实在在的好处:
这个特性让 Apache DolphinScheduler 更安全、更易用,更能应对现代数据平台的复杂需求。
我鼓励大家去体验新的 OIDC 认证特性!所有工作都是公开进行的,大家可以在官方拉取请求里查看完整实现。
欢迎大家提出反馈,踊跃贡献!感谢大家一同参与这段旅程。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。