[英]Single sign-on - implementation for 3 domains
我的公司在3個不同的域上有3個應用程序。 我們下一步要做的是實現單一登錄解決方案,因此,當一個應用程序中的用戶已經通過身份驗證時,無需在其他應用程序中再次進行身份驗證。
我知道OAuth2 ,但是在完全掌握其想法時我並不自信。 另外,我的印象是OAuth2在我們的案例中會顯得過分殺人 ,因為這3個應用程序都是我們的,因此它們並不是彼此真正的“第三方”-它們是受信任的,並且都是我們開發的。 我們也實際上並不需要完整的API方法 ,該方法將為每個需要auth-access的請求傳遞一個access_token
。
我看到的過程很簡單:
我可以大寫“ HOW?” 在前兩點之后,所以... 我們將如何實現它來實現我們所需要的?
我一直在網上尋找例子。 他們中的大多數人處理的是首頁訪問的一種情況 ,在這種情況下 ,要求用戶登錄,因此應用程序可以獲得一個access_token
來代表用戶進行通信。 太酷了,但我真正感興趣的是稍后出現的情況,即同一用戶訪問另一個附屬域。
我知道這是一個理論上的“操作方法”問題,但是對於將為我們可以(或應該)使用的實施方式提供一些啟示的任何建議或資源,我仍然非常感謝。
我們開始在公司使用中央身份驗證服務 ,並取得了巨大的成功。 見這對CAS的SSO很大的序列圖。 CAS支持幾種協議OOTB,包括SAML和OAuth2,還支持幾種用戶數據庫OOTB。 我們正在使用LDAP來存儲和驗證用戶。
為了回答您的問題,在SSO提供者登錄后,您的客戶會獲得一個帶有“票證”(TGT)的cookie。 當他們嘗試訪問任何安全資源時,它們會再次重定向到登錄頁面,但是,如果他們已經擁有該TGT,則SSO提供程序會立即在查詢參數中使用“服務票證”(ST)將其重定向回到安全資源。 。 服務器使用ST來驗證用戶是否已通過CAS驗證,它甚至可以獲取有關用戶的屬性(例如角色,姓名,電話號碼等)。 然后,服務器應開始與客戶端的會話,以便重定向握手僅在客戶端首次嘗試訪問安全資源時發生。
CAS有一個PHP客戶端 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.