2013-07-18 64 views
1

我已經瀏覽過類似的問題,並且已經閱讀了關於SAML 2.0的幾篇文章,但是我仍然無法理解SAML Auth Request。SAML 2.0身份驗證請求的用途和用途是什麼?

我已經實施了幾個基於SAML的SSO解決方案,其中我的公司是IdP(身份提供商)。我們一直通過SAML Response將我們網站上的用戶發送給第三方:

  1. 用戶登錄我們的網站。
  2. 用戶點擊我們網站上的特殊鏈接。
  3. 我們準備了SAML Response XML。
  4. 我們用我們的私鑰對它進行電子簽名。
  5. 將其作爲HTML表單中的隱藏字段與「RelayState」參數一起發送回用戶的瀏覽器。
  6. 我們將此表單自動發佈到SP(服務提供商)URL。

就是這樣。

SAML 2.0的文章(例如,Wikipedia overview article on SAML 2.0)認爲,我們缺少一個步驟:「SAML驗證請求」。似乎SP需要首先向IdP(我們)發送「SAML Auth請求」來啓動SSO,然後我們應該使用SAML Response做出響應。

SP如何決定何時初始化SSO? SP甚至不知道我們會用他們的方式發送用戶。用戶當前登錄到我們的網站,當用戶點擊該鏈接時,用戶可以「神奇」地在SP網站上對其進行身份驗證。

謝謝!

P. S我知道SAML 2.0是「行業標準」,但我越用它 - 越覺得它是一種矯枉過正。由於其複雜性,有很多不同的不兼容實現(從我的經驗來看)。每次我們與新合作伙伴一起做SSO時 - 這是一種痛苦。大型公司正在大量出售「開箱即用」的SAML解決方案,這些解決方案沒有人知道如何正確配置和排除故障,因此人們幾乎被迫爲昂貴的承包商付費。公司希望能夠僱用低薪僱員來支持那些過於複雜的SAML解決方案。在與第三方建立單點登錄時,我經常與那些不知道它是什麼的人打交道,他們只是通過點擊按鈕並通過電話向我讀取隱藏的錯誤消息。這全部歸功於SAML過度設計。但是,嘿 - 有一個很好的一面:我的薪水真的很好,因爲我理解SAML的程度至少可以讓它工作。 :)

回答

3

您正在使用在規範中指定的所謂未經請求的響應,因此您不是「缺少一個步驟」。它4.1.5下指定在SAML profile spec

正常使用情況是用戶試圖登錄到SP和SP用戶重定向到IDP進行認證。

您可以選擇的一種實現是您的門戶只是將用戶重定向到SP。如果SP檢測到用戶沒有會話,SP將開始對IDP的正常SSO

+0

很好的答案 - 謝謝!這現在非常有意義。 –

+0

只需添加,觸發IdP啓動的SSO實際上並不是標準的一部分,但該頁面Stefan鏈接解釋了觸發後會發生什麼。大多數IdP只有某種URL或重定向來執行它 - Shibboleth IdP有一個端點,記錄在:https://wiki.shibboleth.net/confluence/display/SHIB2/IdPUolicolicSSO – Martin