万宁市网站建设_网站建设公司_产品经理_seo优化
2025/12/21 20:55:34 网站建设 项目流程

前,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 登录页面

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

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询