Spring Security SAML坚持在SAML身份验证请求(ProtocolBinding属性)中请求Artifact绑定:
<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
AssertionConsumerServiceURL="http://sp.com/saml/SSO/alias/defaultAlias"
Destination="https://idp.com/idp"
ForceAuthn="false"
ID="a4acj06d42fdc0d3494h859g3f7005c"
IsPassive="false"
IssueInstant="2012-12-05T17:07:18.271Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Artifact"
Version="2.0"
>
如何配置POST绑定? 谢谢你的回答!
- 安德烈亚斯
答案 0 :(得分:6)
感谢nobby和Sanjeev,我最近将此应用于类似的案例,它让我走上正轨。
作为Spring Security SAML2扩展的新手,我不得不做一些额外的挖掘来应用WebSSOProfileOptions。基本上,要在SAML身份验证请求上获取HTTP-POST绑定,您需要将配置文件选项传递给org.springframework.security.saml.websso.WebSSOProfileImpl#sendAuthenticationRequest()
方法。
对于我们的配置,它与config in the Spring RC2 sample project非常相似,这意味着将Sanjeev解决方案中描述的WebSSOProfileOptions
bean传递给samlEntryPoint.defaultProfileOptions
属性(或在那里添加绑定属性)
麻烦的是,这并没有导致AuthnRequest获取设置的绑定属性。在我们的例子中,我们的SAML元数据在HTTP-Artifact绑定isDefault=true
上指定了AssertionConsumerService
。在我们的RC2版本的Spring Security SAML2库中,这是org.springframework.security.saml.metadata.MetadataGenerator
的默认行为。
可以通过设置MetadataGenerator的assertionConsumerIndex
属性来覆盖它。在我们的例子中,HTTP Post断言消费者在索引1处配置。
<bean id="metadataGeneratorFilter" class="org.springframework.security.saml.metadata.MetadataGeneratorFilter">
<constructor-arg>
<bean class="org.springframework.security.saml.metadata.MetadataGenerator">
<property name="assertionConsumerIndex" value="1" /><!-- 1=HTTP-POST -->
</bean>
</constructor-arg>
</bean>
答案 1 :(得分:2)
在securityContext.xml
sp-initiated绑定中可以设置。以下示例使用HTTP-POST
<bean class="org.springframework.security.saml.websso.WebSSOProfileOptions">
<property name="includeScoping" value="false"/>
<property name="binding" value="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"/>
</bean>
绑定的值可以在org.opensaml.common.xml.SAMLConstants
类中找到。