news 2026/6/10 15:57:52

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/6/10 15:52:34

奶奶都能看懂的 C++ —— vector 与迭代器

但是在讲解它之前,我们需要先了解迭代的对象是什么。常见的一种,叫做 vector。vector 类型使用可变有序序列我们知道,数学里,vector 是向量的意思。但 C 里的向量和它不太一样。它的含义是,具有可变元素个数的有序对象…

作者头像 李华
网站建设 2026/6/10 15:27:25

基于java的SpringBoot/SSM+Vue+uniapp的校园活动管理系统的详细设计和实现(源码+lw+部署文档+讲解等)

文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言 🌞博主介绍:✌全网粉丝15W,CSDN特邀作者、211毕业、高级全…

作者头像 李华
网站建设 2026/6/10 12:26:53

MPK(Mirage Persistent Kernel)源码笔记(1)--- 基础原理

x00 概要 CMU 贾志豪老师团队提出的MPK(Mirage Persistent Kernel)是依托 Mirage 编译器生态的创新运行时系统,其核心能力在于将多GPU环境下大语言模型(LLM)推理任务自动转换为适配GPU架构的高性能巨型内核&#xff0…

作者头像 李华
网站建设 2026/6/10 14:06:35

PHP 异常处理全攻略 Try-Catch 从入门到精通完全指南

什么是 Try-Catch? Try-catch 是 PHP 处理异常的机制——程序执行期间发生的意外事件或错误。与其让应用程序崩溃,try-catch 允许你拦截这些错误并优雅地处理它们。 把它想象成一张安全网。你“尝试”执行可能失败的代码,如果失败了&#xf…

作者头像 李华
网站建设 2026/6/10 11:24:27

达梦数据库安装

好的,这是一篇关于达梦数据库(DM Database)安装的详细指南,包含目录、文字说明和图片位置示意,内容丰富,力求达到3000字的要求。达梦数据库安装与配置详细指南目录引言1.1 达梦数据库简介1.2 安装前准备的重…

作者头像 李华
网站建设 2026/6/9 12:19:00

非线性最优化问题求解器Ipopt介绍

文章目录一、关键输入信息1、优化问题的维度2、优化变量的边界3、优化问题的初始迭代点:4、优化问题的数据结构(Structure):5、优化问题函数的值:二、C Interface1、Ipopt::TNLP::get_nlp_info2、Ipopt::TNLP::get_bounds_info3、Ipopt::TNLP…

作者头像 李华