2016-03-21 43 views
0

我想了解在Spring SAML中發送和接收身份驗證請求的流程。我注意到在這個過程中的許多地方使用了bean SAMLContextProvider。它的目的是什麼?這個過程沒有它可以工作嗎?SAMLContextProvider在Spring中的用途SAML

這個bean是在securityContext.xml引用爲:

<bean id="contextProvider" class="org.springframework.security.saml.context.SAMLContextProviderImpl"/> 

回答

0

類SAMLContextProviderImpl是在春季SAML起着重要作用的重要類之一......它進行解碼和編碼SAML請求/響應和轉換春天可以理解它的方式。這也使得春季瞭解ENTITYID,角色,元數據,一個本地實體/應用程序的安全密鑰...

境提供關於填充本地服務提供商 信息(應用程序),如ENTITYID,角色,元數據,安全 密鑰,SSL證書和信任引擎,用於驗證簽名 和SSL/TLS連接。一旦填充的上下文可用於參與處理傳入或傳出的SAML消息的所有組件。 ContextProvider可以定製以改變SAML擴展的行爲。默認實現 org.springframework.security.saml.context.SAMLContextProviderImpl 在ExtendedMetadata依賴於信息的可用性和執行 以下步驟創造上下文:

  • 通過查找本地SP的ENTITYID解析/ alias /(例如myAlias,位於https://www.myserver.com/saml_extension/saml/sso/alias/myAlias?idp=myIdp)之後的部分URL,並將其與ExtendedMetadata中指定的屬性別名進行匹配。如果該URL不包含任何別名部分,則使用在元數據bean上使用屬性hostedSPName配置的默認服務提供者。
  • 填充用於解密發送到此服務提供商的數據的憑證。在ExtendedMetadata指定屬性encryptionKey的情況下,它將被用作從keyManager bean中查找私鑰的別名。否則,將使用keyManager bean的defaultKey。
  • 填充用於SSL/TLS客戶端認證的憑證。在ExtendedMetadata指定屬性tlsKey的情況下,它將用作keyManager bean中的查找鍵的別名。否則,將不提供用於客戶端認證的憑證。
  • 填充信任引擎驗證簽名。取決於基於8.2.1節「元數據互操作性概要文件(MetaIOP)」或8.2.2節「PKIX概要文件」的ExtendedMetadata信任引擎中的securityProfile設置。 填充信任引擎以驗證SSL/TLS連接。根據基於第8.2.1節「元數據互操作性概要文件(MetaIOP)」或第8.2.2節的ExtendedMetadata信任引擎中的sslSecurityProfile設置,創建「PKIX概要文件」。 在SSO的初始化期間,ContextProvider也被要求提供對等IDP的元數據。系統執行以下步驟來定位對等IDP以使用:

在SSO的初始化期間,還要求提供ContextProvider以提供對等IDP的元數據。系統執行以下步驟來找到對等IDP以使用:

  • 加載HttpRequest對象的參數idp,並嘗試通過entityId定位對等IDP。如果沒有提供idp參數,系統將啓動IDP查找過程(在本地SP的ExtendedMetadata中啓用時)或使用元數據Bean中指定的默認IDP。

參考:請參閱第10.2節「Spring提供程序的Spring SAML Doc。 Spring SAML Doc

Implementation Doc