news 2026/2/14 21:01:42

GSoC 成果公布!印度开发者为 DolphinScheduler 引入通用 OIDC 认证,实现无缝安全访问

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GSoC 成果公布!印度开发者为 DolphinScheduler 引入通用 OIDC 认证,实现无缝安全访问

前,Apache DolphinScheduler 提供了几种登录方式,像密码登录、LDAP,还有 Casdoor SSO。但这些方法都有短板,比如说过度依赖 Casdoor 项目,或者 OAuth 的实现不够灵活,跟各种企业身份系统集成的时候特别麻烦。

作为我 2025 年谷歌暑期代码计划(Google Summer of Code)的项目成果,我很高兴给大家介绍一个解决方案:全新的通用 OpenID Connect(OIDC)认证机制。它简化并升级了访问 DolphinScheduler 的方式,让 DolphinScheduler 真正契合企业需求。这个实现巧妙地运用了现有的 Nimbus SDK,还精心设计成能与当前数据库架构无缝衔接,保证所有用户都能轻松完成升级。

1d7f44f5-cbd4-44f5-abf9-fc2a26f69802

认证架构前后对比

🤔 什么是 OIDC?打个比方

不妨把 OIDC 想象成通用的数字护照。就好比你不用为每个要用的服务(比如 DolphinScheduler)单独创建账户,只要拿出身份提供商(像谷歌、Keycloak,或者公司内部的登录系统)给的可信护照,就能证明自己的身份。

从技术角度讲,OIDC 是现代安全标准,在 OAuth 2.0 协议基础上构建了身份验证层。OAuth 2.0 解决的是授权问题(你能做什么),而 OIDC 解决的是身份验证问题(你是谁)。

这个机制对 Apache DolphinScheduler 来说特别合适,原因如下:

通用性强 🌐:它能跟各种合规的身份提供商配合,像 Keycloak、Okta、Azure AD、Dexidp,甚至飞书和企业微信这类社交/企业登录方式都能用。

安全性高 🛡️:它用数字签名的 ID 令牌(JWT)来保证用户身份真实有效,没被篡改过。

灵活度高 🔌:即插即用,企业能轻松把 Apache DolphinScheduler 接入现有的身份基础设施。

01efc6fe-a859-4cb0-bf8b-44e0243786d7

OIDC 数字护照

✨ DolphinScheduler 中 OIDC 的关键特性

我做的这个谷歌暑期代码计划项目给 DolphinScheduler 带来了好几个超实用的企业级特性。

真正的单点登录(SSO):用户现在只要用主身份提供商登录一次,就能直接访问 DolphinScheduler,不用再记另外的密码,使用起来超级方便。

集中式身份管理:在企业环境里,管理员能在 Keycloak 或者 Okta 这样的中央身份提供商(IdP)里统一管理所有用户的访问权限。员工入职或者离职的时候,在一处就能给他们开通或者取消 Apache DolphinScheduler 的访问权限,既提升了安全性,又简化了用户生命周期管理。

自动用户配置与动态角色同步:用户第一次通过 OIDC 登录的时候,Apache DolphinScheduler 会自动创建他们的账户。通过映射身份提供商里的组声明(比如 Keycloak 里的 “dolphinscheduler - admins” 组),就能自动给用户分配管理员权限,新用户上手特别快。而且每次登录都会重新检查角色同步,保证身份提供商始终是权限的唯一权威来源。也就是说,在中央 IdP 里更新角色(升职、降职或者撤销权限),用户下次登录就自动生效。

ID 令牌增强安全性:OIDC 提供一种安全的 JSON Web 令牌(JWT),叫 ID 令牌。这个令牌由 IdP 数字签名,从加密层面保证用户身份真实可靠。DolphinScheduler 每次登录都验证这个令牌,只有认证通过的用户才能访问。

广泛兼容各类 OIDC 提供商:这个项目最大的优势就是通用性。只要遵循 OIDC 标准,Apache DolphinScheduler 就不局限于特定的提供商,能跟一大波身份解决方案兼容,包括但不限于:

开源 IdP:Keycloak、Dexidp

商业 IdP:Okta、Auth0、Microsoft Entra ID(Azure AD)

云原生代理:OAuthProxy

企业与社交登录:飞书、企业微信登录

工作原理:深入剖析

OIDC 集成采用标准的授权码流程,保证身份验证又安全又靠谱。

2a8e4291-503a-4ded-85ce-e28e279f1403

使用 OIDC 的 DolphinScheduler 简化登录流程图

🛠️ 分步指南:如何用 Keycloak 配置 OIDC

配置 OIDC 很简单。下面是用 Keycloak 和 Dex Idp 的快速指南。

示例 1:使用 Keycloak

下面是用流行的开源身份提供商 Keycloak 的快速指南。

步骤 1:配置身份提供商(Keycloak)

在 Keycloak 实例里,得把 DolphinScheduler 注册成新客户端。

创建客户端:给它起个客户端 ID(比如 dolphinscheduler - client)。

c2b90eb9-084c-4030-a359-ea1b76a0b2bd

设置重定向 URI:这一步很关键。要加上 DolphinScheduler API 服务器的回调 URL,格式是 http://{api - host:port}/dolphinscheduler/login/oauth2/code/{provider - id}。要是本地搭建的环境,就是 http://localhost:12345/dolphinscheduler/login/oauth2/code/keycloak。

c3432074-8659-440b-975c-f37b7091bde0

获取凭证:到 “Credentials” 标签页,复制客户端密钥。

edac7733-d60f-4b34-92c2-f95e9f73be3e

💡 快速上手

要是想测试,可以用 dolphinscheduler - api - test/dolphinscheduler - api - test - case/src/test/resources/docker/oidc - login/realm - export.json 这个预配置好的文件,一键启动 Keycloak 实例,所有必要设置都已经弄好了!

步骤 2:配置 DolphinScheduler

接下来,用 Keycloak 的凭证更新 dolphinscheduler - api/src/main/resources/application.yaml 文件。

f3b979e9-a15f-42fd-8681-6e69be71174d

示例 2:使用 Dexidp(展示通用性)

下面看看怎么配置 Dex,另一个很火的 OIDC 身份提供商,感受一下这个系统的灵活性。

步骤 1:配置 Dex

在 Dex 配置文件里,把 DolphinScheduler 加到 staticClients 列表里。

示例 Dex 配置文件 config.yaml:

4fce96e1-4c6c-4173-8c27-dbeb07761b0a

步骤 2:配置 DolphinScheduler

在 application.yaml 里加一个新的提供商条目。

步骤 3:登录!

重启 DolphinScheduler API 服务器之后,登录页面就会出现 “Login with Keycloak” 和 “Login with Dex” 按钮。

7ff2952e-28bc-4e9a-b494-962b0e2be951

开启 OIDC 的 DolphinScheduler 登录页面

两种方式的用户流程都很顺畅:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/11 14:51:00

多智能体协同系统

多智能体协同系统的核心概念 多智能体协同系统(Multi-Agent Systems, MAS)通过多个自主智能体的交互实现复杂任务,广泛应用于机器人协作、自动驾驶、游戏AI等领域。核心特性包括分布式决策、通信协议、任务分配与冲突解决。典型应用案例 1. 无…

作者头像 李华
网站建设 2026/2/11 8:27:08

多角度关于人的本质的论述,你怎么思考?

第六章:多角度关于人的本质的论述人的本质,人和动物的区别是什么,此文可以参考。这个问题很深奥,历来人类试图回答。比如中国古代对于人,有善恶之分,但这显然不具有说服力。以下是马克思哲学关于人本质的思…

作者头像 李华
网站建设 2026/2/11 17:43:52

Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(六)

Flutter 实现一个容器内部元素可平移、缩放和旋转等功能(六) Flutter: 3.35.6 前面有人提到在元素内部的那块判断怎么那么写的,看来对知识渴望的小伙伴还是有,这样挺好的。不至于说牢记部分知识,只需要大致了解一下有…

作者头像 李华
网站建设 2026/2/13 4:26:04

python作业4

a 56 b -18# 1. 按位与(&):对应位都为1则为1,否则为0 # 56: 00111000 # -18补码: 11101110 # 按位与: 00101000 → 十进制40 bit_and a & b print(f"按位与(&): {a} & {b} {bit_and}")# 2. 按位或(|):对应位有…

作者头像 李华
网站建设 2026/2/5 7:08:06

今天教大家免费使用先进的AI大模型,非常详细收藏这一篇就够了

为什么要使用ai模型? 用好ai可以解决你想做的事情比如数据录入、数据整理、数据分析、数据报告等等问题。只要你想好规则,他都可以给你生成,而且你要担心数据泄露问题,完全可以让他给你生成一个离线的app或者exe程序或者前端程序&…

作者头像 李华
网站建设 2026/2/13 16:43:21

边缘AI与端云协同架构

边缘AI与端云协同架构概述 边缘AI将人工智能模型部署在边缘设备(如手机、传感器、嵌入式设备)上,实现本地实时处理;端云协同通过边缘与云计算的协作,平衡计算负载、隐私与延迟。典型应用包括智能家居、工业检测、自动驾…

作者头像 李华