首页/新闻资讯/正文详情

Apache DolphinScheduler 认证方式全解析:PASSWORD、LDAP、Casdoor SSO 与 OAuth2 登录配置实战

发布时间:2026/9/23 18:50:33 来源:云帆数科 栏目:资讯中心
Apache DolphinScheduler 认证方式全解析:PASSWORD、LDAP、Casdoor SSO 与 OAuth2 登录配置实战
Apache DolphinScheduler 认证方式全解析PASSWORD、LDAP、Casdoor SSO 与 OAuth2 登录配置实战【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/gh_mirrors/do/dolphinschedulerApache DolphinScheduler 的 API 服务内置了四种可切换的登录认证方式自身账号密码PASSWORD、LDAP、基于 Casdoor 的 SSO 单点登录以及 OAuth2 授权登录。本文以官方文档《认证方式》为骨架结合dolphinscheduler-api模块的真实配置与源码实现逐项讲解每种认证方式的配置字段、底层认证流程与开发者调试方法帮助你在实际部署中快速接入企业现有的账号体系。认证体系总览目前 DolphinScheduler 支持四种认证方式PASSWORD使用 DolphinScheduler 自身的用户账号密码登录默认方式LDAP对接企业 LDAP/AD 目录服务进行账号认证CASDOOR_SSO通过 Casdoor IAM/SSO 平台实现单点登录OAuth2 授权登录支持 GitHub、Google、Gitee 等多个 OAuth2 provider并且OAuth2 授权登录方式可以和其他认证方式同时使用。从源码看认证类型在 AuthenticationType.java 中被定义为枚举PASSWORD(0)、LDAP(1)、CASDOOR_SSO(2)分别对应“用户名密码校验”“LDAP 服务器校验”“Casdoor SSO provider 校验”。认证器的装配逻辑位于 SecurityConfig.java启动时读取security.authentication.type配置默认PASSWORD留空时自动回退到 PASSWORD通过switch创建对应的AuthenticatorBean 并注入依赖PASSWORD→PasswordAuthenticatorLDAP→LdapAuthenticatorCASDOOR_SSO→CasdoorAuthenticatorOAuth2 则不走这条 switch 分支而是由独立的OAuth2Configuration在security.authentication.oauth2.enabletrue时自动装配因此可以与其他认证方式共存。修改认证方式application.yaml 配置所有认证相关的配置都集中在 API 服务的配置文件dolphinscheduler-api/src/main/resources/application.yaml中。仓库中该文件的security段默认配置如下security: authentication: # Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO) type: PASSWORD # IF you set type LDAP, below config will be effective ldap: # ldap server config urls: ldap://ldap.forumsys.com:389/ base-dn: dcexample,dccom username: cnread-only-admin,dcexample,dccom password: password user: # admin userId when you use LDAP login admin: read-only-admin identity-attribute: uid email-attribute: mail # action when ldap user is not exist (supported types: CREATE,DENY) not-exist-action: CREATE ssl: enable: false # jks file absolute path password trust-store: /ldapkeystore.jks trust-store-password: password casdoor: user: admin: oauth2: enable: false provider: github: authorizationUri: redirectUri: clientId: clientSecret: tokenUri: userInfoUri: callbackUrl: iconUri: provider: github google: authorizationUri: redirectUri: clientId: clientSecret: tokenUri: userInfoUri: callbackUrl: iconUri: provider: google casdoor: # Your Casdoor server url endpoint: client-id: client-secret: # The certificate may be multi-line, you can use |- for ease certificate: # Your organization name added in Casdoor organization-name: # Your application name added in Casdoor application-name: # Doplhinscheduler login url redirect-url: 其中security.authentication.type支持的值即为上述三种枚举PASSWORD、LDAP、CASDOOR_SSO。修改后重启 API 服务即可生效。更完整的字段解释可参考 Api-server 相关配置 文档。PASSWORD账号密码认证这是系统的默认认证方式无需额外配置。其实现类 PasswordAuthenticator.java 非常简洁直接调用userService.queryUser(userId, password)校验 DolphinScheduler 数据库中的用户表账号密码Override public User login(String userId, String password) { return userService.queryUser(userId, password); }适合小规模、独立部署、尚未接入统一身份源的场景。LDAP 认证将security.authentication.type设置为LDAP即可启用此时下方ldap段的配置全部生效。核心参数说明如下配置项默认值说明security.authentication.ldap.urlsldap://ldap.forumsys.com:389/LDAP 服务器地址security.authentication.ldap.base-dndcexample,dccomLDAP 搜索的基准 DNsecurity.authentication.ldap.usernamecnread-only-admin,dcexample,dccom用于连接 LDAP 并执行搜索的服务账号 DNsecurity.authentication.ldap.passwordpassword服务账号密码security.authentication.ldap.user.adminread-only-admin使用 LDAP 登录时被识别为系统管理员ADMIN_USER的用户 IDsecurity.authentication.ldap.user.identity-attributeuid用户身份标识字段用于匹配登录用户名security.authentication.ldap.user.email-attributemail用户邮箱字段登录成功后回填到 DolphinScheduler 用户信息security.authentication.ldap.user.not-exist-actionCREATELDAP 认证通过但本地用户不存在时的动作可选CREATE自动建号或DENY拒绝登录security.authentication.ldap.ssl.enablefalse是否启用 SSL 连接 LDAPsecurity.authentication.ldap.ssl.trust-store/ldapkeystore.jksJKS 信任库的绝对路径security.authentication.ldap.ssl.trust-store-passwordpasswordJKS 信任库密码LDAP 登录的底层流程从 LdapService.java 的ldapLogin方法可以看到完整的认证链路使用配置的username/password服务账号建立InitialLdapContext连接以identity-attribute为过滤条件EqualsFilter(identityAttribute, userId)、以base-dn为根、SUBTREE_SCOPE为搜索范围在目录树中检索对应用户拿到用户完整 DN 后用用户自己输入的密码重新建立InitialDirContext连接连接成功即代表密码校验通过校验通过后读取email-attribute字段并返回邮箱。not-exist-action动作由枚举 LdapUserNotExistActionType.java 定义CREATE(0)表示用户不存在时自动创建DENY(1)表示拒绝登录。最终的用户落地逻辑在 LdapAuthenticator.java 中User user null; String ldapEmail ldapService.ldapLogin(userId, password); if (ldapEmail ! null) { user userService.getUserByUserName(userId); if (user null ldapService.createIfUserNotExists()) { user userService.createUser(ldapService.getUserType(userId), userId, ldapEmail); } } return user;即LDAP 校验通过 → 查询本地用户 → 若不存在且策略为CREATE则自动建号admin配置的用户会被创建为管理员账号。SSL 配置若 LDAP 服务器启用了 SSL需将ssl.enable置为true并指定 JKS 信任库的绝对路径与密码。源码中启用 SSL 时会设置Context.SECURITY_PROTOCOL ssl并通过javax.net.ssl.trustStore/javax.net.ssl.trustStorePassword系统属性加载信任库。开发者 LDAP 测试不启动项目即可验证集成仓库为 LDAP 集成提供了单元测试类可以在不启动整个 DolphinScheduler 的情况下验证 LDAP 登录链路dolphinscheduler-api/src/test/java/org/apache/dolphinscheduler/api/security/impl/ldap/LdapServiceTest.java使用步骤如下修改TestPropertySource配置参数为你的 LDAP 信息修改ldapLogin方法中的userId和userPwd为你的账号密码修改ldapLogin方法中 expected email 为正常登录的返回值执行ldapLogin方法判断 LDAP 登录结果是否符合预期。如果要启用 SSL 测试将TestPropertySource中 ssl 相关参数修改为security.authentication.ldap.ssl.enablefalse // absolute path security.authentication.ldap.ssl.trust-store/ldapkeystore.jks security.authentication.ldap.ssl.trust-store-passwordyourpassword然后运行ldapLoginSSL方法判断 email 是否为预期的返回值。通过 Casdoor 实现 SSO 登录Casdoor 是基于 OAuth 2.0、OIDC、SAML 和 CAS 的面向 UI 的身份访问管理IAM/单点登录SSO平台。DolphinScheduler 通过casdoor-java-sdk见 CasdoorAuthenticator.java 引入的CasdoorAuthService对接该平台。步骤 1部署 Casdoor首先部署 Casdoor参考 Casdoor 官方安装文档。成功部署后需要确认Casdoor 服务器在http://localhost:8000上成功运行浏览器访问http://localhost:7001能看到 Casdoor 的登录页面输入admin和123可正常登录验证服务可用。步骤 2配置 Casdoor创建或使用现有的 Casdoor 应用程序添加重定向 URL获取方式见下文步骤 3添加想要的 provider 并补充其他设置。配置完成后可以在应用设置页面获得两个值Client ID和Client secret后续配置 DolphinScheduler 时需要用到。另外浏览器访问http://CASDOOR_HOSTNAME/.well-known/openid-configuration可以查看 Casdoor 的 OIDC 配置包括授权端点、Token 端点、JWKS 等信息供排查问题时比对。步骤 3配置 DolphinScheduler在dolphinscheduler-api/src/main/resources/application.yaml中启用 Casdoor SSOsecurity: authentication: # Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO) type: CASDOOR_SSO casdoor: # Your Casdoor server url endpoint: client-id: client-secret: # The certificate may be multi-line, you can use |- for ease certificate: # Your organization name added in Casdoor organization-name: # Your application name added in Casdoor application-name: # Doplhinscheduler login url redirect-url: http://localhost:5173/login各字段含义配置项说明casdoor.endpointCasdoor 服务器 URLcasdoor.client-idCasdoor 应用 Client IDcasdoor.client-secretCasdoor 应用 Client secretcasdoor.certificateCasdoor 应用证书可能为多行可用\|-块标量方便书写casdoor.organization-name在 Casdoor 中创建的组织名称casdoor.application-name在 Casdoor 中创建的应用名称casdoor.redirect-urlDolphinScheduler 登录 URL即步骤 2 中需要填到 Casdoor 应用的重定向地址security.authentication.casdoor.user.admin使用 Casdoor 登录时被识别为系统管理员的用户名底层 SSO 流程从 CasdoorAuthenticator.java 可以看到完整流程getSignInUrl(state)基于casdoorAuthService.getSigninUrl(redirectUrl, state)生成带随机state参数的 Casdoor 登录链接用户登录成功后回调login(state, code)先取出会话中保存的原始state用MessageDigest.isEqual做常量时间比较防止 CSRF 攻击通过casdoorAuthService.getOAuthToken(code, state)换取 Token再parseJwtToken(token)解析出 Casdoor 用户信息用户不存在时自动创建与 LDAP 类似通过getUserType判断是否管理员。通过 OAuth2 授权认证登录OAuth2 是 DolphinScheduler 认证体系中唯一可以与其它认证方式同时启用的登录方式且支持同时配置多个 providerGitHub、Google、Gitee 等。前端登录页会根据GET /dolphinscheduler/oauth2-provider接口返回的 provider 列表动态渲染对应的第三方登录按钮。步骤 1获取 OAuth2 客户端凭据在对应的 OAuth2 服务商如 GitHub、Google、Gitee开发者平台创建 OAuth App获取Client ID与Client secret并配置授权回调地址。步骤 2在 API 配置文件中开启 OAuth2 登录编辑dolphinscheduler-api/src/main/resources/application.yamlsecurity: authentication: …… # 省略 oauth2: # 将enable设置为true 开启oauth2登录模式 enable: true provider: github: # 设置provider的授权地址例如https://github.com/login/oauth/authorize authorizationUri: # dolphinscheduler的后端重定向接口地址例如http://127.0.0.1:12345/dolphinscheduler/redirect/login/oauth2 redirectUri: # oauth2的 clientId clientId: # oauth2的 clientSecret clientSecret: # 设置provider的请求token的地址 tokenUri: # 设置provider的请求用户信息的地址 userInfoUri: # 登录成功后的重定向地址, http://{ip}:{port}/login callbackUrl: # 登录页跳转按钮的图片url不填写则会展示一个文字按钮 iconUri: provider: github google: authorizationUri: redirectUri: clientId: clientSecret: tokenUri: userInfoUri: callbackUrl: iconUri: provider: google gitee: authorizationUri: https://gitee.com/oauth/authorize redirectUri: http://127.0.0.1:12345/dolphinscheduler/redirect/login/oauth2 clientId: clientSecret: tokenUri: https://gitee.com/oauth/token?grant_typeauthorization_code userInfoUri: https://gitee.com/api/v5/user callbackUrl: http://127.0.0.1:5173/login iconUri: provider: gitee各 provider 字段含义字段说明authorizationUri服务商的授权地址如 GitHub 的https://github.com/login/oauth/authorizeredirectUriDolphinScheduler 后端重定向接口地址格式为http://{ip}:{api-port}/dolphinscheduler/redirect/login/oauth2注意请求需带上provider参数源码中会以redirect_uri?providerxxx拼接clientIdOAuth2 客户端 IDclientSecretOAuth2 客户端密钥tokenUri服务商用于换取 access token 的地址userInfoUri服务商用于获取用户信息的地址callbackUrl登录成功后的前端重定向地址即 DolphinScheduler 前端登录页如http://{ip}:{port}/loginiconUri登录页跳转按钮的图标 URL不填写则展示文字按钮providerprovider 名称标识需与配置 key 一致步骤 3使用 OAuth2 登录配置完成并重启 API 服务后前端登录页会出现各 provider 的第三方登录按钮点击即可走完整的 OAuth2 授权码流程。底层实现解读配置装配OAuth2Configuration.java 使用ConditionalOnProperty(prefix security.authentication.oauth2, name enable, havingValue true)按需装配将provider映射为MapString, OAuth2ClientProperties未开启时该 Bean 为空认证入口LoginController.java 提供GET /dolphinscheduler/redirect/login/oauth2接收授权码code与provider参数换取 Token使用code client_id grant_typeauthorization_code redirect_uri向tokenUri发起 POST 请求从返回 JSON 中解析access_token获取用户携带 access token 请求userInfoUri得到用户信息后查询或创建本地用户新建用户统一为GENERAL_USER回调前端创建 Session 成功后302重定向到callbackUrl并携带sessionId与authTypeoauth2参数前端据此完成登录态写入失败时则携带authTypeoauth2erroroauth2 auth error跳回。配置参数速查表下表汇总了认证相关配置项及其默认值摘自 Api-server 相关配置配置项默认值说明security.authentication.typePASSWORD权限校验类型可选PASSWORD、LDAP、CASDOOR_SSOsecurity.authentication.ldap.user.adminread-only-adminLDAP 登录时识别的系统管理员账号security.authentication.ldap.urlsldap://ldap.forumsys.com:389/LDAP 服务器 URLsecurity.authentication.ldap.base.dndcexample,dccomLDAP base dnsecurity.authentication.ldap.usernamecnread-only-admin,dcexample,dccomLDAP 服务账号security.authentication.ldap.passwordpasswordLDAP 服务账号密码security.authentication.ldap.user.identity-attributeuidLDAP 用户身份标识字段security.authentication.ldap.user.email-attributemailLDAP 邮箱字段security.authentication.ldap.user.not-exist-actionCREATELDAP 登录时本地用户不存在的动作可选CREATE、DENYsecurity.authentication.ldap.ssl.enablefalseLDAP SSL 开关security.authentication.ldap.ssl.trust-storeldapkeystore.jksLDAP JKS 文件绝对路径security.authentication.ldap.ssl.trust-store-passwordpasswordLDAP JKS 密码security.authentication.casdoor.user.admin空Casdoor 登录时识别的系统管理员账号casdoor.endpoint空Casdoor 服务器 URLcasdoor.client-id空Casdoor 应用 Client IDcasdoor.client-secret空Casdoor 应用 Client secretcasdoor.certificate空Casdoor 应用证书casdoor.organization-name空Casdoor 组织名称casdoor.application-name空Casdoor 应用名称casdoor.redirect-url空DolphinScheduler 登录 URL实践建议与注意事项修改配置后需重启 API 服务认证类型在启动阶段由SecurityConfig一次性装配为对应的AuthenticatorBean运行期改配置不生效OAuth2 与其它方式的共存只有 OAuth2 支持与其他认证方式同时启用PASSWORD、LDAP、CASDOOR_SSO 三者互斥生产环境安全LDAP 若走公网建议启用 SSL 并妥善保管 JKS 信任库Casdoor 的certificate字段支持多行证书YAML 中可用|-块标量书写CSRF 防护Casdoor SSO 通过比对 session 中保存的state参数防御 CSRF调试时如遇登录失败可优先检查 state 是否一致账号自动创建LDAP 与 Casdoor 登录时若本地用户不存在会自动创建账号LDAP 可通过not-exist-action: DENY关闭该行为建议结合企业实际账号策略选择 CREATE 或 DENY。通过本文的配置说明与源码级流程解析你可以根据企业现有的身份体系为 DolphinScheduler 快速选择合适的认证方式独立部署用 PASSWORD企业目录服务用 LDAP统一门户接入用 Casdoor SSO面向公网的多端登录则可叠加 OAuth2。【免费下载链接】dolphinschedulerApache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code项目地址: https://gitcode.com/gh_mirrors/do/dolphinscheduler创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

2026最新爱帮公交网避坑指南:配置环境卡半天?3招解决
2026最新爱帮公交网避坑指南:配置环境卡半天?3招解决

2026最新爱帮公交网避坑指南:配置环境卡半天?3招解决 配置环境就卡半天,是不是你的常态?很多刚入行的应届生,拿到一个项目,光是在本地跑通爱帮公交网的前后端联调,就耗掉整整一天。更惨的是,明明照着官方文档敲代码,报错信息却像天书一样,CP… · 2026/9/23 18:50:33

微信视频怎么美颜性能优化源码解析
微信视频怎么美颜性能优化源码解析

微信视频怎么美颜性能优化源码解析 官方文档里那几百页的参数定义,读完脑子还是空的?别急,今天直接上 源码解析 ,把 微信视频怎么美颜 背后的渲染管线扒开给你看。很多开发者以为美颜就是套个滤镜,其实核心在于 GPU并行计算 与 CPU预处理… · 2026/9/23 18:50:20

MATLAB实现语音情感识别:基于LSTM的完整流程
MATLAB实现语音情感识别:基于LSTM的完整流程

简介:基于深度学习的语音情感识别系统MATLAB实现,面向人工智能、语音信号处理方向的开发者与研究者,用于解决语音情绪分类中的特征提取与模型构建问题。资源包共9个文件,包含4个m脚本,覆盖BPNN、PNN、LVQ等经典网络实现… · 2026/9/23 18:50:07

3分钟吃透ne555引脚图:面试源码解析避坑指南
3分钟吃透ne555引脚图:面试源码解析避坑指南

3分钟吃透ne555引脚图:面试源码解析避坑指南 面试被问“请画出NE555的引脚图并说明功能”,你脑子里是一片空白?别慌,这正是应届生最容易翻车的细节题。很多候选人背了一堆算法题,却在硬件基础这一关栽跟头,导致面试官对你“软硬结合”的能力… · 2026/9/23 19:21:53

Phoenix 前端工程中的 JavaScript 热路径优化:循环内缓存属性访问(Cache Property Access in Loops)
Phoenix 前端工程中的 JavaScript 热路径优化:循环内缓存属性访问(Cache Property Access in Loops)

可观测性AI 评测LLMOpsAI 应用人工智能 【免费下载链接】phoenix AI Observability & Evaluation 项目地址: https://gitcode.com/gh_mirrors/phoenix13/phoenix 点击查看 免费下载 导读 本篇文章基于 Vercel Engineering 维护的 React/Next.js 性能优化规则集… · 2026/9/23 19:21:53

Java AI框架对比:LangChain4j、Spring AI与Agent-Flex实战解析
Java AI框架对比:LangChain4j、Spring AI与Agent-Flex实战解析

1. Java生态中的AI应用框架全景观察在Java技术栈中集成AI能力正成为企业级应用开发的新常态。过去半年我深度试用了三大主流框架——LangChain4j、Spring AI和Agent-Flex,它们分别代表了不同维度的技术路线选择。LangChain4j作为LangChain的Java移植版,保… · 2026/9/23 19:21:53

机器学习驱动的二手车价格预测系统实现全流程
机器学习驱动的二手车价格预测系统实现全流程

简介:面向二手车价格预测的完整机器学习项目,针对二手车市场价格评估难的问题,通过数据分析建立预测模型,涵盖数据清洗、特征分析、线性回归建模、交叉验证调优与基于Flask的预测网站实现,适合学习回归任务和模型落地的… · 2026/9/23 19:21:53

中文语音识别系统实战:FBank特征、CTC解码与语言模型优化
中文语音识别系统实战:FBank特征、CTC解码与语言模型优化

简介:这是一份基于深度学习的中文语音识别系统实现,面向具备Python与神经网络基础的开发者,覆盖了声学模型与语言模型两大核心模块。声学模型部分提供了多种网络结构实现,包括循环神经网络与卷积神经网络的CTC变体,以及… · 2026/9/23 19:21:47

QUANTAXIS mdBook 文档系统实战指南:从本地构建到 GitHub Pages 自动发布
QUANTAXIS mdBook 文档系统实战指南:从本地构建到 GitHub Pages 自动发布

QUANTAXIS mdBook 文档系统实战指南:从本地构建到 GitHub Pages 自动发布 【免费下载链接】QUANTAXIS QUANTAXIS 支持任务调度 分布式部署的 股票/期货/期权 数据/回测/模拟/交易/可视化/多账户 纯本地量化解决方案 项目地址: https://gitcode.com/gh_mirrors/qu/… · 2026/9/23 19:21:47

3招搞定手机怎么下载微信面试难题实战项目解析
3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A… · 2026/9/23 0:00:03

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型
你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型

你有新短消息请注意查收:3个新手避坑指南搞定消息系统选型 面试被问“高并发下如何保证消息不丢失”,你张口就是“用Redis”,结果面试官追问“如果Redis宕机了怎么办”,你瞬间卡壳。这种场景太常见了,很多新手在背八股文时,只记住了技术名词… · 2026/9/23 0:00:29

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧
Win7无线热点配置工具源码解析:解决API失效的3个实战技巧

Win7无线热点配置工具源码解析:解决API失效的3个实战技巧 Win7无线热点配置工具在Win10/11上跑不动?不是你的问题,是版本升级后 API 全变了。很多老项目里的 netsh wlan… · 2026/9/23 0:00:36

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码