在 Apache DolphinScheduler 上调试 LDAP 登录,亲测有效!

2022-10-15,,,,

点击上方 蓝字关注我们

作者 | 小钻风

01

背景

当看这边文章时,那得恭喜您终于找到宝藏,这是梦开始的地方……

使用 Apache  DolphinScheduler 的小伙伴会遇到个挠脑袋的问题——又又又又要维护一套用户体系啦?

我们在日常办公中,会遇到各种各样的办公系统,试想一哈,如果每个系统都需要维护一套各自的用户体系,身为打工仔的我们得需要记住多个用户名和密码。假如时不时地忘记某个密码,那不得处于奔溃边缘来回踱步?这体验简直想 SHI,况且还时常要求我们开发人员将不同的用户体系打通?我……

那就会有人问,就没有办法统一用户体系吗?这样全公司用一套用户体系,然后各个系统兼容该用户体系不就 O 了吗?

咳咳,假装正经一哈,这就得请出我们今天配角 LDAP了(什么?主角当然还是 DS 咯)。

02

LDAP 是什么

度娘亲切地告诉您,LDAP,即 Light weight Directory Access Protocal(轻量级目录访问协议),是一个开放的、中立的、工业标准的应用协议,通过 IP 协议提供访问控制和维护分布式信息的目录信息。

目录服务在开发内部网和与互联网程序共享用户、系统、网络、服务和应用的过程中占据了重要地位。例如,目录服务可能提供了组织有序的记录集合,通常有层级结构,例如公司电子邮件目录。同理,也可以提供包含了地址和电话号码的电话簿。(划重点,层级结构、目录)

其最常用的用途该是单点登录了,即在公司,登陆某个系统应用账号后,可以继续访问其他多个内部系统应用而不用频繁地登陆。

简而言之,用一句话来概括,LDAP 就是一个基于 X.500 标准的轻量级目录访问协议,由目录数据库和一套访问协议组成。

为什么要用 LDAP?是因为这是一个开放的 Internet标准,支持跨平台的 Internet 协议,在业界中得到广泛认可,并且市场上或开源社区上大多产品都加入了对 LDAP 的支持。因此,对于这类系统,不需单独定制,只需要通过 LDAP 做简单的配置就可以与服务器做认证交互。

这种“简单粗暴”的方式可以大大降低重复开发和对接的成本,不用你就 Out 了。

好,天气冷,屁股凉,话不多说,让我们进入正式环节。等等等,啥,您公司没有使用 LDAP ?一袋米要抗几楼,您阔以奏凯咯。

03

在 DS 调试 LDAP 登录功能

接下来进入今天的正题:如何在 Apache DolphinScheduler 上调试 LDAP 登录功能?

1、获取最新 DS 版本源代码

git clone https://github.com/apache/dolphinscheduler.git
git checkout origin/2.0.1-release

2、打开项目

用 IDEA

不好意思,拿错了,是这个

打开如下:(由于本地 DS 源码版本存在多个,已重命名为 dolphinscheduler-2.0.1)

3、配置 mysql (个人使用习惯哈)

将 dolphinscheduler-2.0.1/dophinscheduler-dao/src/main/resources/sql/dolphinscheduler_mysql.sql 文件加载进 MySQL 数据库已经创建好的库中

4、配置 mysql 连接信息

dolphinscheduler-2.0.1/dophinscheduler-dao/src/main/resources/application-mysql.yaml

5、修改 DS 登录模式为 LDAP

dolphinscheduler-2.0.1/dophinscheduler-api/src/main/resources/application-api.yaml

# Authentication types (supported types: PASSWORD)
# security.authentication.type=PASSWORD
security.authentication.type=LDAP
ldap.user.admin= # 选择性配置
ldap.urls= # ip:port
ldap.base.dn= # DN 分辨名
ldap.username= # 用户名
ldap.password= # 密码
ldap.user.identity.attribute= # 用于搜索过滤的Key值
ldap.user.email.attribute= # 用户匹配用户的邮箱的Key值
ldap.user.domain= # 该值为我公司LDAP用户登录需要的域名

6、看看登录流程

7、LdapAuthenticator 实现类就是我们所要关注的,在 dolphinscheduler-api/src/main/java/org/apache/dolphinscheduler/api/security 包下

8、由于测试 LDAP 功能只涉及到 api 模块,因此修改 standalone-server 模块启动类,并以 debug 模式启动。

public static void main(String[] args) throws Exception {
final TestingServer server = new TestingServer(true);
System.setProperty("registry.servers", server.getConnectString());
new SpringApplicationBuilder(
ApiApplicationServer.class
// MasterServer.class,
// WorkerServer.class,
// AlertServer.class
// ).profiles("master", "worker", "api", "alert", "h2", "standalone").run(args);
).profiles("api","mysql").run(args);
}

9、LDAP 配置信息主要是在 LdapService 类中获取。

10、LdapService 类的 ldapLogin 方法中,打上必要的断点。

11、使用 Postman 请求登录接口。

12、如此反复调试直至最后 LdapService 类的 ldapLogin 方法返回正确邮箱地址即可

04

结尾

经过难以忍受的容忍,您终于看到这儿啦。本次主要和小伙伴们分享自己使用 Apache  DolphinScheduler 集成 LDAP 功能的过程。当然经过不断吐血调试,最终实现 LDAP 账户可以直接访问 Apache  DolphinScheduler,对于 LDAP 账户来说,各家公司大同小异,相信大家只要有耐心,肯定能够实现集成的。

05

参与贡献

随着国内开源的迅猛崛起,Apache DolphinScheduler 社区迎来蓬勃发展,为了做更好用、易用的调度,真诚欢迎热爱开源的伙伴加入到开源社区中来,为中国开源崛起献上一份自己的力量,让本土开源走向全球。

参与 DolphinScheduler 社区有非常多的参与贡献的方式,包括:

贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

如何参与贡献链接:https://dolphinscheduler.apache.org/zh-cn/community/development/contribute.html

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的。

参与开源可以近距离与各路高手切磋,迅速提升自己的技能,如果您想参与贡献,我们有个贡献者种子孵化群,可以添加社区小助手

微信(Leonard-ds) 手把手教会您( 贡献者不分水平高低,有问必答,关键是有一颗愿意贡献的心 )。添加小助手微信时请说明想参与贡献。

社区官网

https://dolphinscheduler.apache.org/

代码仓地址https://github.com/apache/dolphinscheduler

您的 Star,是 Apache DolphinScheduler 为爱发电的动力️ 

投稿请添加社区小助手微信

(Leonard-ds)

☞Apache DolphinScheduler 2.0.1 来了,备受期待的一键升级、插件化终于实现!

☞亿云基于 DolphinScheduler 构建资产数据管理平台服务,助力政务信息化生态建设 | 最佳实践

☞不会提交 PR 的小伙伴看过来,超详细的视频教程!

☞从 Airflow 到 Apache DolphinScheduler,有赞大数据开发平台的调度系统演进

☞在生鲜零售业,DolphinScheduler 还能这么玩!

☞4 亿用户,7W+ 作业调度难题,Bigo 基于 Apache DolphinScheduler 巧化解

☞荔枝机器学习平台与大数据调度系统“双剑合璧”,打造未来数据处理新模式!

☞看到社区代码不规范,强迫症的我顺手就给格式化了!

☞最佳实践|联通数科基于 DolphinScheduler 的二次开发

☞DolphinScheduler 荣获 2021 中国开源云联盟优秀开源项目奖!

点击阅读原文,加入开源!

点个在看你最好看

在 Apache DolphinScheduler 上调试 LDAP 登录,亲测有效!的相关教程结束。

《在 Apache DolphinScheduler 上调试 LDAP 登录,亲测有效!.doc》

下载本文的Word格式文档,以方便收藏与打印。