5

Spring Security SAML 坚持在 SAML 认证请求中请求 Artifact 绑定(ProtocolBinding 属性):

<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 绑定?感谢您的任何回答!

——安德烈亚斯

4

2 回答 2

7

感谢 nobby 和 Sanjeev,我最近将这个应用到了一个类似的案例中,它让我走上了正确的轨道。

作为 Spring Security SAML2 扩展的新手,我不得不做一些额外的挖掘工作才能应用 WebSSOProfileOptions。本质上,要在 SAML 身份验证请求上获得 HTTP-POST 绑定,您需要将配置文件选项传递给该org.springframework.security.saml.websso.WebSSOProfileImpl#sendAuthenticationRequest()方法。

对于我们的配置,它与 Spring RC2 示例项目中的配置非常相似,这意味着将WebSSOProfileOptionsSanjeev 解决方案中描述的 bean 传递给samlEntryPoint.defaultProfileOptions属性(或在那里添加绑定属性)。

麻烦的是,这并没有导致 AuthnRequest 获取设置的绑定属性。在我们的例子中,我们的 SAML 元数据是isDefault=true在 HTTP-Artifact bound 上指定的AssertionConsumerService。在我们的 RC2 版本的 Spring Security SAML2 库中,这是org.springframework.security.saml.metadata.MetadataGenerator.

这可以通过设置assertionConsumerIndexMetadataGenerator 的属性来覆盖。在我们的例子中,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>
于 2013-03-26T00:52:24.687 回答
2

securityContext.xmlsp-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类中找到。

于 2013-01-04T11:15:09.763 回答