[英]Shibboleth for multiple sites on IIS
我正在嘗試為一個 IIS 實例上的兩個站點配置 Shibboleth 服務提供程序:
因此,當我打開第一個入口點時,我有 302 響應並重定向到 IdP,在輸入憑據后 - 重定向到 site.com/Shibboleth.sso/SAML2/POST 並且一切正常。
我的 SPA 正在瀏覽器中運行,並向 site-api.com 發出 AJAX 請求。 這是一個問題,因為我有 302 響應並再次重定向到 IdP。 如果瀏覽器發出請求,我沒有任何問題,因為會自動重定向到 IdP 瀏覽器處理。 在通過 IdP 上的 session cookie 進行身份驗證后,它再次重定向到 site-api.com/Shibboleth.sso/SAML2/POST。
如何在兩個站點之間共享 session? 如果用戶已經在 site.com 上通過身份驗證,是否可以在第一次請求到 site-api.com 后不進行重定向。
我已經用於第二個站點:
<ApplicationOverride id="site-api" entityID="https://site-api.com/shibboleth" />
另外,我為 site-api.com 注冊了 ISAPI 和 RequestMap。 從技術上講,它適用於 site.com。
我想我可以通過使用 XML 配置文件中的屬性以某種方式共享 session,但對我沒有任何作用。 請幫忙。 :)
在 Shibboleth SP 中使用 ApplicationOverride 將輔助應用程序作為單獨的服務調用,即您已確定該 entityID 是唯一的。 在輔助 API 的情況下,我不會使用 Shibboleth 保護它,也就是說,如果您從已經過身份驗證的站點進行 RESTful 調用,為什么要使用 Shibboleth SP(它是為確保針對 IdP 進行身份驗證而構建的)來保護它. 我認為您需要重新考慮您的身份驗證工作流程......一個更合理的想法:
(1) 使用 SAML/Shibboleth 從 IdP 獲取 session for site.com,
(2)基於SP session 生成一個應用程序session(review Sessions in the SAML flow,其實有幾個,不只是一個SP session)。 更不用說 Shibboleth 是為身份驗證而不是授權而構建的。
(3) Make a REST API call based on whatever API security mechanism you want... ie you could build a JWT based on the SAML assertion data and verify it's valid at the API endpoint because you know the certs.
SAML web 流程並不是真正為 API 構建的,就像您在這里嘗試使用它一樣……您試圖擺脫的 302,這是 SAML 工作流程中的必需品。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.