2015-09-28 85 views
1

我有門戶A,爲此我使用SP(Azure AD)實現了SAML身份驗證。在門戶網站A中,我將以門戶網站的形式顯示Portal B的一些屏幕。跨多個SP的SAML身份驗證

門戶A和門戶B都使用來自同一IDP(Azure AD)的基於SAML的身份驗證。

這裏的情況是用戶登錄到Portal A,當試圖訪問Portal B屏幕顯示爲Iframe的頁面時,他們必須再次啓動SAML登錄(但是他們不會提示現在輸入其憑據 ,因爲它們是已經使用SAML身份驗證登錄到門戶A)

我最初的印象是,當Portal A通過IDP身份驗證時,它將針對所有使用相同IDP進行身份驗證的門戶建立SSO。但是現在我明白,它不是如何工作的。

當用戶成功通過一個SP進行身份驗證時,是否可以爲所有使用相同IDP進行身份驗證的SP實現SSO,不需要提示使用samle IDP登錄所有其他SP?

+0

您的問題描述有點不清楚,但只要用戶通過IdP進行身份驗證(通常是通過訪問第一個SP觸發的),就不需要憑證來驗證後續SP。 –

+0

那麼問題是什麼? –

+0

抱歉不清楚。是的,後續SP不需要憑證。但爲什麼用戶應該重定向到後續SP的登錄頁面呢?在隨後的SP上 - 他需要點擊登錄按鈕,然後再次將他帶到STS門戶,然後只有他成功通過其他SP進行身份驗證。雖然他沒有被提示重新輸入他的憑據,但我想,用戶不需要點擊後續SP上的登錄按鈕,就可以直接驗證用戶而不要求他點擊後續sp的登錄按鈕。 – Dinny

回答

1

SAML身份驗證請求中有一個isPassive選項,允許SP檢查用戶是否在與用戶沒有任何交互的情況下在IDP上進行身份驗證,而不管身份(即身份驗證與未身份驗證)。見https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf節3.4.1:

IsPassive [可選]
一個布爾值。如果爲「真」,則身份提供者 和用戶代理本身不能明顯地控制來自請求者的用戶界面,並且以明顯的方式與演示者交互。如果未提供值,則默認爲 「false」。

SP可以在不向用戶顯示是否彈出「登錄」按鈕的iframe中使用該按鈕。如果用戶通過身份驗證,則會返回SAML響應而不會打擾用戶,並且可以創建應用程序會話。如果用戶未通過身份驗證,則SAML響應將顯示該消息,並顯示「登錄」按鈕。

這確實取決於SP知道要問哪個IDP的事實。

沒有標準的方式一次性將用戶登錄到所有SP,但IDP可以在類似於企業門戶的情況下實施此類功能,該門戶通過IDP啓動的SSO SAML響應向SP啓動iframe。