在 Apache DolphinScheduler 上调试 LDAP 登录,亲测有效!
点击上方
蓝字关注我们

作者 | 小钻风
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 登录,亲测有效!的更多相关文章
- flex在众多手机浏览器上的兼容方案(亲测华为手机自带浏览器)
如果项目使用构建工具,可加autoprefixer来处理,[autoprefixer使用指南] 纯手写css兼容代码,需给每个使用的属性加上属性前缀 /*display: flex;写法*/ span ...
- 日均 6000+ 实例,TB 级数据流量,Apache DolphinScheduler 如何做联通医疗大数据平台的“顶梁柱”?
作者 | 胡泽康 鄞乐炜 作者简介 胡泽康 联通(广东)产业互联网公司 大数据工程师,专注于开源大数据领域,从事大数据平台研发工作 鄞乐炜 联通(广东)产业互联网公司 大数据工程师,主要从事大数据平 ...
- Apache DolphinScheduler新一代分布式工作流任务调度平台实战-上
概述 定义 dolphinscheduler 官网地址 https://dolphinscheduler.apache.org/ dolphinscheduler GitHub地址 https://g ...
- 本周六 Apache DolphinScheduler & Doris 将联合线上 Meetup
活动背景 2020年,大数据成为国家基建的一个重要组成,大数据在越来越多的领域展现威力.随着大数据的应用场景越来越多,大家对数据的响应速度和数据加工工作流的方便程度也提出了更高的要求.在这种背景下,相 ...
- Apache DolphinScheduler & Doris 将于本周六联合进行线上 Meetup
01 - 活动介绍 2020年,大数据成为国家基建的一个重要组成,大数据在越来越多的领域展现威力.随着大数据的应用场景越来越多,大家对数据的响应速度和数据加工工作流的方便程度也提出了更高的要求.在这种 ...
- Apache DolphinScheduler 3.0.0 正式版发布!
点亮 ️ Star · 照亮开源之路 GitHub:https://github.com/apache/dolphinscheduler 版本发布 2022/8/10 2022 年 8 ...
- 数据平台调度升级改造 | 从Azkaban 平滑过度到 Apache DolphinScheduler 的操作实践
Fordeal的数据平台调度系统之前是基于Azkaban进行二次开发的,但是在用户层面.技术层面都存在一些痛点问题难以被解决.比如在用户层面缺少任务可视化编辑界面.补数等必要功能,导致用户上手难体验差 ...
- 金融任务实例实时、离线跑批Apache DolphinScheduler在新网银行的三大场景与五大优化
在新网银行,每天都有大量的任务实例产生,其中实时任务占据多数.为了更好地处理任务实例,新网银行在综合考虑之后,选择使用 Apache DolphinScheduler 来完成这项挑战.如今,新网银行多 ...
- Apache DolphinScheduler 1.3.9 发布,新增 StandaloneServer
点击上方 蓝字关注我们 2021 年 10 月 22 日,Apache DolphinScheduler 正式发布 1.3.9 版本.时隔一个半月,在社区贡献者的共同努力下,Apache Dolphi ...
随机推荐
- Netty源码研究笔记(4)——EventLoop系列
1. Netty源码研究笔记(4)--EventLoop系列 EventLoop,即事件驱动,它是Netty的I/O模型的抽象,负责处理I/O事件.任务. 不同的EventLoop代表着不同的I/O模 ...
- Prometheus普罗米修斯快速入门
欢迎来到普罗米修斯! Prometheus是一个监控平台,通过从监控目标的抓取HTTP端点上获取指标. 本指南将展示如何使用和安装Promethues,配置和监视第一个资源.还将下载并安装导出器Exp ...
- 每天一个 HTTP 状态码 204
204 No Content 204 No Content 表示服务器成功地处理了客户端的请求,但是没有任何要响应的内容.API 设计上,在用 PUT 请求更新某个资源成功后,后端可以在 HTTP 响 ...
- k8s的api资源
NAME SHORTNAMES APIGROUP NAMESPACED KIND 资源用途说明 bindings TRUE Binding 已弃用.用于记录一个object和另一个object ...
- 从单例谈double-check必要性,多种单例各取所需
theme: fancy 前言 前面铺掉了那么多都是在讲原则,讲图例.很多同学可能都觉得和设计模式不是很搭边.虽说设计模式也是理论的东西,但是设计原则可能对我们理解而言更加的抽象.不过好在原则东西不是 ...
- 001 手把手用Git,Git从入门到上传本地项目到Github,看这篇就够了
安装git 下载Git 下载好后,一路next即可 安装好后,打开Git bash,进行配置 首先配置自己的身份 git config --global user.name "Name&qu ...
- 基于Mybatis插件方式实现数据脱敏处理
一.项目介绍 1.项目背景 有时候我们数据库中存储一些敏感的信息比如手机号.银行卡号,我们希望我们查询出来的的时候对一些敏感信息做一些脱敏处理. 当面项目是基于自定义Mybatis插件方式实现数据脱敏 ...
- Java 向数组中添加元素
一般数组是不能添加元素的,因为他们在初始化时就已定好长度了,不能改变长度. 向数组中添加元素思路 第一步:把数组转化为集合 list = Arrays.asList(array); 第二步:向集合中添 ...
- MySQL case when then 用法
下面演示一下MYSQL中的CASE WHEN THEN的用法. 一. SELECT MENU_NAME, YXBZ, case YXBZ when 'Y' then '开放' when 'N' the ...
- 【FAQ】华为帐号服务报错 907135701的常见原因总结和解决方法
很多开发者在接入华为帐号服务时,经常会出现907135701的报错.根据官网文档说明,错误码907135701表示: 这个错误码在安卓和鸿蒙上都会出现,导致该报错的原因有很多,开发者可以按照下面几点进 ...