close

點擊上方藍字關注我們


作者| 小鑽風


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.gitgit 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=PASSWORDsecurity.authentication.type=LDAPldap.user.admin= # 選擇性配置 ldap.urls= # ip:portldap.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 中國開源雲聯盟優秀開源項目獎!

點擊閱讀原文,加入開源!

點個在看你最好看

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()