认证方式
- 目前我们支持四种认证方式,Apache DolphinScheduler自身账号密码登录,LDAP, 通过Casdoor实现的SSO登录和通过Oauth2授权登录,并且oauth2授权登录方式可以和其他认证方式同时使用。
修改认证方式
dolphinscheduler-api/src/main/resources/application.yaml
security:authentication:# Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO)type: PASSWORD# IF you set type `LDAP`, below config will be effectiveldap:# ldap server configurls: ldap://ldap.forumsys.com:389/base-dn: dc=example,dc=comusername: cn=read-only-admin,dc=example,dc=compassword: passworduser:# admin userId when you use LDAP loginadmin: read-only-adminidentity-attribute: uidemail-attribute: mail# action when ldap user is not exist (supported types: CREATE,DENY)not-exist-action: CREATEssl:enable: false# jks file absolute path && passwordtrust-store: "/ldapkeystore.jks"trust-store-password: "password"casdoor:user:admin: ""oauth2:enable: falseprovider:github:authorizationUri: ""redirectUri: ""clientId: ""clientSecret: ""tokenUri: ""userInfoUri: ""callbackUrl: ""iconUri: ""provider: githubgoogle:authorizationUri: ""redirectUri: ""clientId: ""clientSecret: ""tokenUri: ""userInfoUri: ""callbackUrl: ""iconUri: ""provider: googlecasdoor:# Your Casdoor server urlendpoint: ""client-id: ""client-secret: ""# The certificate may be multi-line, you can use `|-` for easecertificate: ""# Your organization name added in Casdoororganization-name: ""# Your application name added in Casdoorapplication-name: ""# Doplhinscheduler login urlredirect-url: ""
具体字段解释详见:Api-server相关配置
开发者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.enable=false// absolute pathsecurity.authentication.ldap.ssl.trust-store=/ldapkeystore.jkssecurity.authentication.ldap.ssl.trust-store-password=yourpassword
运行ldapLoginSSL方法,判断email是否为预期的返回值。
通过 Casdoor 实现 SSO 登录
Casdoor 是基于 OAuth 2.0、OIDC、SAML 和 CAS 的面向 UI 的身份访问管理(IAM)/单点登录(SSO)平台。您可以通过以下步骤通过 Casdoor 为 Dolphinscheduler 添加 SSO 功能:
步骤1. 部署 Casdoor
首先,需要部署 Casdoor。 您可以参考 Casdoor 官方文档进行安装。 成功部署后,您需要确保:
- Casdoor 服务器在 http://localhost:8000 上成功运行。
- 打开您喜欢的浏览器并访问 http://localhost:7001,您将看到 Casdoor 的登录页面。
- 输入 admin 和 123,测试登录功能是否正常工作。
然后,您可以通过以下步骤在自己的应用程序中快速实现基于 Casdoor 的登录页面。
步骤2. 配置 Casdoor
- 创建或使用现有的 Casdoor 应用程序。
- 添加您的重定向 URL(您可以在下一节中了解更多关于如何获取重定向 URL 的详细信息)

- 添加您想要的提供程序并补充其他设置。
不出所料,您可以在应用程序设置页面上获得两个值:Client ID 和 Client secret,如上图所示。我们将在下一步中使用它们。
打开您喜欢的浏览器并访问:http://`CASDOOR_HOSTNAME`/.well-known/openid-configuration,您将看到 Casdoor 的 OIDC 配置。
步骤3. 配置 Dolphinscheduler
dolphinscheduler-api/src/main/resources/application.yaml
security:authentication:# Authentication types (supported types: PASSWORD,LDAP,CASDOOR_SSO)type: CASDOOR_SSOcasdoor:# Your Casdoor server urlendpoint:client-id:client-secret:# The certificate may be multi-line, you can use `|-` for easecertificate:# Your organization name added in Casdoororganization-name:# Your application name added in Casdoorapplication-name:# Doplhinscheduler login urlredirect-url: http://localhost:5173/login
通过OAuth2授权认证登录
dolphinscheduler可以同时支持多种OAuth2的provider,只需要在配置文件中打开Oauth2的开关并进行简单的配置即可。
步骤1. 获取OAuth2客户端凭据


步骤2. 在api的配置文件中开启oauth2登录
security:authentication:…… # 省略oauth2:# 将enable设置为true 开启oauth2登录模式enable: trueprovider:github:# 设置provider的授权地址,例如https://github.com/login/oauth/authorizeauthorizationUri: ""# dolphinscheduler的后端重定向接口地址,例如http://127.0.0.1:12345/dolphinscheduler/redirect/login/oauth2redirectUri: ""# oauth2的 clientIdclientId: ""# oauth2的 clientSecretclientSecret: ""# 设置provider的请求token的地址tokenUri: ""# 设置provider的请求用户信息的地址userInfoUri: ""# 登录成功后的重定向地址, http://{ip}:{port}/logincallbackUrl: ""# 登录页跳转按钮的图片url,不填写则会展示一个文字按钮iconUri: ""provider: githubgoogle:authorizationUri: ""redirectUri: ""clientId: ""clientSecret: ""tokenUri: ""userInfoUri: ""callbackUrl: ""iconUri: ""provider: googlegitee: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_type=authorization_code"userInfoUri: "https://gitee.com/api/v5/user"callbackUrl: "http://127.0.0.1:5173/login"iconUri: ""provider: gitee
步骤3.使用oauth2登录

