簡體   English   中英

單一登錄-實施3個域

[英]Single sign-on - implementation for 3 domains

我的公司在3個不同的域上有3個應用程序。 我們下一步要做的是實現單一登錄解決方案,因此,當一個應用程序中的用戶已經通過身份驗證時,無需在其他應用程序中再次進行身份驗證。

我知道OAuth2 ,但是在完全掌握其想法時我並不自信。 另外,我的印象是OAuth2在我們的案例中會顯得過分殺人 ,因為這3個應用程序都是我們的,因此它們並不是彼此真正的“第三方”-它們是受信任的,並且都是我們開發的。 我們也實際上並不需要完整的API方法 ,該方法將為每個需要auth-access的請求傳遞一個access_token

我看到的過程很簡單:

  1. 用戶進入。首先,檢查是否已在3個域之一中對它們進行身份驗證。
  2. 如果用戶尚未通過身份驗證,則將其重定向到登錄頁面,並使用成功的登錄嘗試在所有3個平台上將用戶“標記”為已通過身份驗證。
  3. 如果用戶已經在的3個平台的一個認證,只需提供所請求的資源,而無需登錄。

我可以大寫“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM