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

点击上方 001d272d92b1730bba488b29b11f1e83.png蓝字关注我们

e080013f55801deb2c7e26fa4fa7ae13.png

作者 | 小钻风

01

背景

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

f048e96fe2d31133102954cdea01295d.png

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

47b4afde13fd165bcc7c07ae4e3a45c6.png

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

270ed5c685ecb1546ff1c36a243691a2.png

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

fd5a620336d3100053a02e1f6b84fedb.png

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

02

LDAP 是什么

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

83d5a962e6b15bb78050dbea62efd483.png

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

4a04ddc5f142a405e8b43d1f6a668366.png

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

355f74309608943629e01a5c7df63962.png

d2ce34b527fc1b3ce824cc11b5afc96a.png

简而言之,用一句话来概括,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

0ecc9231d76229935091524db0dc8790.png

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

4c87373871367a2becba09c2822cc807.png

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

45a4845a48a497c73d7f8bc1c7e61693.png

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、看看登录流程

ee64c11eab6b40cff194befcbb814dfc.png

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

fbe89fb9a3998532371a6c488b62dbcc.png

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 类中获取。

a621f92492e8edd573d4ef93b87c12b0.png

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

896083b7971bde8dfce0630b9b940a69.png

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

549d5ea09866f78c70d56714efec59bb.png

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

04

结尾

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

05

参与贡献

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

83241c42d509a6835685fc84ccd65808.png

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

95ec51fb7e56858f2dde7c0ac1d5fa3c.png

贡献第一个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)

2dfa0b9d6d12d6120ab9d23fad4274b8.png

5657f35768df8538cff9c8d15a72526a.png

78adae15a8383da992dcdc80d3cdd7b8.png

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

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

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

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

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

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

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

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

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

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

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

c6ec7361b79816f1bc722e0b38078cad.png

点个在看你最好看

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DolphinScheduler社区

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值