簡體   English   中英

如何使用Web應用程序作為客戶端向SAML依賴方進行身份驗證

[英]How to authenticate to a SAML relying party using a Web Application as a client

一段時間以來,我一直在研究這個主題,但運氣不佳。

場景:1.使用標准表單身份驗證登錄到Web應用程序。 2.從Web應用程序登錄到SAML依賴方。

問題:我考慮過使用iFrame對SAML依賴方執行身份驗證。 這種方法的根本問題是,在完成SAML身份驗證流程后,我需要將持久身份驗證令牌傳遞回我的Web應用程序客戶端(此令牌用於以后將Web應用程序訪問SAML依賴方)。

有人可以評論這是否是正確的方法(出於安全考慮)嗎?

是否存在用於將基於Web的客戶端身份驗證為配置為SAML依賴方的系統的替代方法?

提前致謝,

西門

您要問的問題是一個基本的聯邦問題。 就SAML而言,有一個身份提供程序(IdP)和一個服務提供程序。 IdP負責驗證用戶身份並向SP Web應用程序發出SAML聲明。 在您的問題中,聽起來您的應用程序是希望向SP Web應用程序發出SAML聲明的IdP(我將您的SAML依賴方解釋為SP Web應用程序)。 請記住,SAML斷言集中於對SP Web應用程序進行身份驗證的一次使用,其中SAML斷言可以包含用於AuthZ的屬性。

另一種體系結構是集成第三方SAML IdP,以便您的應用程序是SP,而另一個應用程序是SP。 兩個SP Web應用程序都將IdP用於AuthN並接收SAML斷言。 同樣,這與AuthN和SAML斷言中信息的一次使用有關。

另一種架構是利用IdP服務器的OpenID Connect(OIDC)。 主要區別在於令牌可以長期保存並用於后續的安全API事務。

關於安全性,所有這些協議在針對各自的體系結構進行適當集成時都內置了安全性。

據我了解,問題是:他的應用程序是一個用戶,他想訪問資源安全的資源,該資源需要基於SAML的身份驗證。

您可以在后台自動進行身份驗證,但隨后必須同時處理雙方的CORS(身份提供者和服務提供者)。 您的方法更容易,因為它是用戶啟動的操作,因此不需要CORS。 要解決的問題:聽起來您的令牌是標頭的一部分,是具有特定名稱的特殊標頭。 在您的情況下,更好的方法(如果可能):將此令牌存儲在Cookie中。 在您的方法中,cookie應該在不同框架之間共享。 然后,您的應用程序可以在訪問資源時發送cookie。 但是請注意:使用Javascript和XMLHTTPREQUEST,您需要設置“ withCredentials”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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