其實也說不上說什麼調研,就是根據客戶需求查找了一些資料,自己總結了一下,在博客記錄下來。
背景
客戶要求:
我們公司的產品爲雲管平臺以及自動化部署解決方案,主要對接雲平臺是甲方公司的aws。在aws上部署有代碼管理服務器,項目構建Jenkins服務器等。現在要實現的就是,要使用甲方公司自己的人事系統(類似OA系統)登錄,登錄之後實現在我們的雲管理平臺,aws,代碼管理倉庫,Jenkins都實現了登錄。其中,甲方公司的人事系統不支持saml2.0,可能支持openID,但是能夠提供驗證信息,即跳轉登錄,驗證信息返回來。而且,還有一部分甲方公司的外包人員的數據不在人事系統之內。
方案分析
目前,做單點登錄要實現我們的雲管理平臺,aws,代碼管理倉庫,Jenkins都實現登錄,經過現在狀況分析,我們平臺可以自己開發,可控性比較強,所以從aws等入手,發現aws,代碼管理倉庫,Jenkins均可支持saml2.0和openId的方式成爲一個SP(service provider),這個時候就缺少一個IDP了。後面我們提出了keycloak,ADFS等解決方案,方案分析如下
(1) keycloak
優點:開源,可以集成到我們系統,支持多種方式對接,擴展性較好
(2)ADFS
優點:比較成熟。初步調研成功,已經實現了與aws和jenkins對接。新版AD FS也支持openId
缺點:較封閉,有未知風險。
(3)雲管理平臺自己集成idp
確定方案
經過比較,考慮項目進度及當前討論情況,選擇ADFS方案,詳細步驟如下:
(1)人事系統的數據(其他的包括外包人員的數據)同步到我們雲平臺數據庫和AD數據庫
(2)雲平臺經過人事系統登錄驗證過後,鏈接ADFS,根據調斷言API實現ADFS登錄
(3)ADFS登錄之後,與ADFS相連的jenkins、代碼管理系統、aws都可以登錄了
調研情況
1.對接ADFS
使用saml2.0目前使用spring-saml-adfs提供的demo可以實現作爲一個sp,進行驗證
參考鏈接
1)spring-security-saml介紹:
http://projects.spring.io/spring-security-saml/
2)adfs對接:
https://docs.spring.io/spring-security-saml/docs/1.0.0.RELEASE/reference/html/chapter-idp-guide.html
3)github地址:
https://github.com/spring-projects/spring-security-saml (sample模塊)
ADFS使用openID對接
https://docs.microsoft.com/en-us/windows-server/identity/ad-fs/development/enabling-openid-connect-with-ad-fs
2.對接keycloak
https://github.com/eugenp/tutorials 中有包括 spring-boot-keycloak的示例
3.雲管理平臺集成idp
https://github.com/eugenp/tutorials 中有包括spring-security-sso的示例
https://github.com/MrsSunny/SSO-OpenSAML
https://github.com/xgtxxxx/sso-demo