2016-03-21 138 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