1. 程式人生 > >號外:友戶通支持企業自有用戶中心啦

號外:友戶通支持企業自有用戶中心啦

water 原因 shadow 完全 密碼驗證 用戶管理 程序 部署 一個

友戶通做用友雲的用戶系統也一年多了,經常聽實施、售前等說要私有化部署友戶通,原因無非是企業的考慮到用戶安全性和單一用戶賬號的需求。但由於用戶管理的復雜性,友戶通部署與維護並不容易,因此經常糾結在用戶系統是用友戶通雲服務還是要私有化部署。
企業私有化IT服務服務發展到幾天已經很豐富,企業內部可能部署了幾十上百的應用程序,企業對於這些應用的用戶通常采取統一的用戶中心來進行管理。

針對這種情況,友戶通特定開發了聯邦用戶中心來支持企業的自有用戶中心。讓我們一起來看看這個聯邦用戶中心是如何支持企業自有用戶中心的。

一、為什麽要使用聯邦身份認證

未使用聯邦身份認證時

o企業自有用戶中心的用戶不能訪問用友雲各個應用

企業應用有自己的用戶中心(以下稱為:自有IdP),通過自有IdP認證的用戶無法直接訪問用友雲。

技術分享圖片

o用戶管理復雜

管理員需要分別在兩個系統中為用戶創建賬號。

o用戶操作繁瑣

用戶訪問兩個系統時需要使用兩個系統的賬號登錄,需要記住兩套密碼。

使用聯邦身份認證後

o自有IdP用戶可以直接訪問用友雲

用戶在企業自有IdP認證通過後,可直接訪問用友雲應用,無需再次經過友戶通認證。企業管理員也無需在友戶通中重復創建用戶。
技術分享圖片

o用戶管理簡單

企業管理員只需要在企業自有IdP中為用戶創建賬號,用戶即可同時訪問兩個系統,降低了管理復雜度。

o用戶操作方便

用戶在本企業IdP中登錄即可訪問企業應用和用友雲應用,使用方便,流暢。

o深度融合

企業內部應用與用友雲在用戶系統上已經打通,在用戶打通的基礎上可根據場景進行進一步的融合。

二、友戶通支持哪些種類的企業IdP

目前友戶通已經支持了LDAP、CAS、OAuth2等標準協議的企業IdP,還支持友戶通自定義的Token機制的IdP.除了友戶通自定義的Token機制支持的企業IdP需要一定的開發量,其他協議的企業IdP只需要在友戶通進行配置就可以使用了,完全不需要進行開發。

友戶通的聯邦用戶身份認證未來還將繼續擴展所支持的協議,很快就會增加對SAML2協議的支持。SAML2協議將不需要友戶通和企業IdP之間有直接網絡連接就可以進行聯邦用戶身份認證。

三、使用友戶通的聯邦身份認證有什麽體驗

體驗一:部署實施簡單

只需要三步甚至兩步就可以部署實施完成企業IdP與友戶通的集成

步驟一:根據需要部署yhtagent(企業IdP在內網,而友戶通需要訪問企業IdP)

步驟二:在友戶通中配置聯邦身份認證。

步驟三:在訪問用友雲的鏈接裏加上thirducid參數(參數值由第二步確定)。
技術分享圖片

聯邦身份認證中心配置界面

體驗二:用戶使用方便

步驟一:登錄企業IdP(LDAP用戶中心則可直接在友戶通登錄界面通過特殊用戶名進行登錄)。

步驟二:在同一個瀏覽器裏打開帶thirducid參數的用友雲鏈接地址,就可登錄用友雲。

企業用戶在內部應用和用友雲應用之間的切換非常方便。

對於企業客戶來說,其員工信息可以得到保護,雲服務的實施變得更加簡單。

四、技術挑戰與實現

挑戰一:支持LDAP協議的企業IdP時,如何確定用戶應該在哪裏驗證。

企業內部的用戶管理經常使用AD域來管理,其支持LDAP協議來進行用戶查詢,用戶名密碼驗證等。

友戶通支持通過LDAP協議使用企業內部的支持LDAP協議的用戶中心賬號進行登錄。LDAP協議已經很成熟了,對接起來並不難,麻煩在於什麽時候,去哪個LDAP用戶中心驗證用戶。針對這個問題,我們使用了兩種方式來解決。

支持方式一:通過特殊用戶名來確定企業IdP

在配置LDAP用戶中心時,為每個LDAP用戶中心配置一個唯一標識符,在登錄的用戶名,加上一個“@”符號和唯一標識符,這樣,友戶通就能識別這個用戶是需要使用哪個LDAP用戶中心去驗證了。這種方式適合主動打開用友雲服務的應用,在登錄主動輸入域賬號進行登錄。

技術分享圖片

支持方式二:通過URL裏的參數來確定企業IdP

在訪問登錄頁面的URL裏增加一個參數thirdUCId,這樣在友戶通系統裏,通過thirdUCId查詢到的企業IdP是LDAP用戶中心,就可以到相應的地方去驗證用戶了。這種方式適合在企業內部的系統裏嵌入URL鏈接穿透到用友雲服務的場景。

技術分享圖片

挑戰二:如何從企業IdP單點登錄到用友雲

很多企業經過了很多輪的信息化,部署了很多應用,企業為了方便員工賬號管理及登錄管理,通常采用支持單點登錄的用戶系統來統一管理用戶賬號,及支持單點登錄。

這些企業如果也購買了用友雲的應用,企業需要使用自己的用戶賬號進行登錄,以方便進行用戶管理。

針對這種需求,友戶通支持CAS、OAuth、SAML標準的單點登錄用戶中心,登錄了企業自有用戶中心後能夠直接登錄用友雲,而不需要再次輸入用戶名和密碼。

支持方式一:使用CAS協議

友戶通和企業IdP之間,走標準CAS協議,即友戶通到企業IdP申請發放ticket,企業IdP發放ticket之後重定向到友戶通,友戶通到企業IdP驗證ticket,驗證成功後即可登錄友戶通。
技術分享圖片

企業IdP負責發放ticket和驗證ticket並返回用戶信息,友戶通的負責向企業IdP申請發放ticket,得到ticket後調用企業IdP驗證驗證ticket並得到用戶信息,並讓用戶登錄到友戶通中。

友戶通在申請企業IdP發放ticket和驗證ticket過程中,瀏覽器主頁面處於等待狀態,子頁面iframe負責申請發放ticket和驗證ticket的接口調用。

該方式實現的難點

1、怎麽確定去哪個企業IdP申請ticket從而登錄呢?咋們來個故技重施,通過URL裏的一個參數thirducid來決定去哪個企業IdP去申請發放ticket.

2、友戶通登錄頁既要在已經登錄了企業IdP時能夠自動登錄,又要在未登錄企業IdP時顯示友戶通登錄界面,兩方又不在同一個域裏,如何做到跨域呢?這裏,我們使用了一個巧妙的方式,也是充分利用CAS標準。在CAS用戶中心裏,如果已經登錄的話,將會發放ticket,並且重定向到service參數指定的url上。前端登錄界面開啟一個iframe去企業IdP申請ticket,同時service地址為友戶通接口,這個接口驗證企業IdP發放的ticket,並發放一個友戶通登錄token,返回一個頁面將父頁面(登錄頁面)導航到友戶通自動登錄url,從而登錄進入友戶通。
技術分享圖片
圖1-2 友戶通集成企業IdP協作圖

下面我們來看看具體是怎麽實現的。

(1)企業IdP配置。將企業IdP的信息配置到友戶通中,包括企業IdP的ticket發放地址,驗證地址,用戶信息的格式,以及發放ticket和驗證ticket時需要的一些參數的配置,以便在單點登錄過程中使用。

(2)登錄服務申請企業IdP發放ticket.登錄服務通過url裏的參數thirducid,查詢到企業IdP的相關配置,將申請發放ticket的地址ticketrequesturl提供給前端JavaScript,前端JavaScript打開一個隱藏的iframe,將iframe的src設置為ticketrequesturl,企業IdP將檢測瀏覽器是否登錄過且有效,如果登錄過且有效,則發放ticket,跳轉到ticketrequesturl裏的service參數的地址上,該地址為IT服務裏的驗證企業IdP ticket接口。

(3)驗證企業IdP ticket接口(第(2)條裏用來作為service地址)。本接口接收企業IdP發放的ticket,以及代表那個企業IdP的thirducid,通過調用相應的企業IdP的驗證ticket的接口,如果ticket合法,企業IdP會返回相應的用戶信息,友戶通將根據配置解析出用戶信息,產生一個友戶通單點登錄token(友戶通的登錄服務接口可通過此token單點登錄到友戶通中),並返回一個頁面(運行在iframe中),此頁面將會將父頁面重定向到友戶通的登錄服務接口(包含友戶通單點登錄token),走完標準友戶通的單點登錄流程後將登錄進入到友戶通。

支持方式二:使用OAuth2協議

使用OAuth2協議和CAS協議差別不大,只需要將CAS協議中申請Ticket替換成申請code,驗證ticket替換成通過code獲取accessToken及用戶信息即可。

挑戰三:如何從友戶通單點登錄到企業IdP

先登錄友戶通,然後登錄企業IdP.如果實現了企業IdP登錄到友戶通,那麽自然會有需求從友戶通登錄到企業IdP.不過,這種方式需要企業IdP做一些定制開發。

友戶通目前支持CAS、oauth2標準協議以及友戶通自定義協議可供企業IdP集成。未來將支持SAML2的協議供企業IdP集成。

友戶通提供前端登錄狀態檢測js(支持jsonp),可檢測友戶通是否已經登錄以及進行CAS發票。

友戶通還提供了js方法獲取oauth2的code(支持jsonp),供oauth2方式進行單點登錄實現。

挑戰四:企業用戶中心外網無法訪問

企業自有用戶中心通常是部署在企業內網的,外網訪問不了。這種情況一般有幾種解決方式。

第一種:讓企業開辟外網端口,讓外網能訪問,但這種方式會讓企業的內部用戶中心暴露在公網,企業可能會有一定的顧慮。

第二種:將外網調用變成內網調用,在企業內部部署一個應用當做中介,只暴露這個新部署的應用。

我們選擇了第二種方式,這種方式不會暴露企業的用戶中心到公網上,打消企業的顧慮。需要開發一個應用當做中介,我們稱為代理(下稱yhtagent)。yhtagent和友戶通直接的通信采用HTTPS保密通信,如果企業還嫌不夠安全,可以在消息內部在使用AES或者RSA等對稱或者非對稱加密算法進行加密,從而保證通信內容的絕對安全。
技術分享圖片

使用YhtAgent時的聯邦身份認證

LDAP類型的用戶中心,Yhtagent實現友戶通到企業單向代理;CAS類型的用戶中心,Yhtagent實現友戶通到企業雙向代理。

號外:友戶通支持企業自有用戶中心啦