2013-04-29 101 views
1

我有一個網站配置爲使用Azure ACS。當用戶在本網站上簽名時,當他訪問我的另一個網站時,我將如何獲得用戶身份,以便用戶無需在ACS中選擇並登錄他的身份提供者?有沒有辦法從多個網站獲取ACS的用戶身份,以便一旦用戶登錄到我的某個網站,當他訪問其他ACS配置的網站時,他將被識別爲登錄用戶? BTW Im使用Azure ACS中的所有4個社交網站作爲身份提供者。如何使用ACS登錄另一個網站後在網站上登錄用戶身份

+0

有沒有現成的方式來實現這一點。但是,由於您控制了所有網站,因此您可以執行某些操作。我試圖找出如何把它放在一個單一的答案,但。因爲它不像我希望的那樣直截了當。 – astaykov 2013-04-29 12:22:11

+0

你能否提供給我相關資源的鏈接?如果我通過基於聲明和基於角色的身份驗證實現混合方法,我會走在正確的軌道上嗎?我只是讓自己的身份提供者充當所有網站的用戶存儲庫,並讓網站檢查用戶是否登錄到IP?但我不知道這是否會奏效,或者是否有其他方式。 – AshT 2013-04-29 14:39:30

+0

我能想到的一個愚蠢的做法是,一旦用戶通過ACS驗證了用戶身份,就可以傳回給您的網站一些加密的令牌,其中包含用戶的身份。每當您從一個站點跳到另一個站點時,繞過此令牌。每當在服務器端發現發送的令牌爲空或無效時,假定用戶未登錄。如果所有網站都在同一個域中,則可以使用cookie輕鬆傳遞令牌。沒有多少考慮利弊,但似乎合法。 – letsc 2013-05-13 16:10:08

回答

1

每個網站都不同於ACS的角度,所以它會發布的令牌也不同。然而SSO,發生在國內流離失所者級別:

  1. 用戶登錄在與谷歌(作爲一個例子)網站上的1
  2. 用戶進入網站2,(用相同的瀏覽器實例),WEBSITE2重定向到ACS, ACS重定向到谷歌
  3. 用戶已經與谷歌認證,回來ACS
  4. ACS發出令牌(用於WEBSITE2),並返回到WEBSITE2

ACS不保留會話與用戶,以便他們會被迫做th整個交易至少一次。

可能發生的情況是,如果您有4個社交IdP(Google,Live,FB,Yahoo大概),則在步驟2中ACS將提示用戶使用IdP。

爲避免這種情況,您必須將登錄請求發送給ACS,並使用whr參數。你必須記住你的用戶使用了哪一個,並指示ACS使用它。用whr,沒有IdP提示。

+0

如何在ACS中存在+1時重定向到特定的IdP(即O365)。使用哪個參數? – Jorge 2015-11-05 16:44:41

+1

我不會再推薦使用ACS,因爲它已被棄用。 – 2015-11-10 22:56:09