在 Spring Security SAML 身份验证请求中配置 POST ProtocolBinding

问题描述 投票:0回答:3
spring security binding saml spring-saml
3个回答
7
投票

感谢 nobby 和 Sanjeev,我最近将其应用于类似的案例,它让我走上了正确的道路。

作为 Spring Security SAML2 扩展的新手,我必须进行一些额外的挖掘才能应用 WebSSOProfileOptions。 本质上,要在 SAML 身份验证请求上获得 HTTP-POST 绑定,您需要将配置文件选项传递给

org.springframework.security.saml.websso.WebSSOProfileImpl#sendAuthenticationRequest()
方法。

对于我们的配置,它与 Spring RC2 示例项目中的 config 非常相似,这意味着将

WebSSOProfileOptions
bean 传递给
samlEntryPoint.defaultProfileOptions
属性(或在其中添加绑定属性),如 Sanjeev 的解决方案中所述。

问题是,这并没有导致 AuthnRequest 拾取所设置的绑定属性。 在我们的例子中,我们的 SAML 元数据在 HTTP-Artifact 绑定

isDefault=true
上指定
AssertionConsumerService
。 在我们的 Spring Security SAML2 库的 RC2 版本中,这是
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>

2
投票

securityContext.xml
中可以设置 sp 启动的绑定。下面的示例使用了 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
类中找到。


0
投票

对于任何想要使用 Java 而不是 XML 进行操作的人:

@Bean
public WebSSOProfileOptions profileOptions() {

    WebSSOProfileOptions profileOptions = new WebSSOProfileOptions();
    profileOptions.setIncludeScoping(false);
    profileOptions.setBinding(SAMLConstants.SAML2_POST_BINDING_URI);

    return profileOptions;
}

和:

@Bean
public MetadataGeneratorFilter metadataGeneratorFilter() {
    return new MetadataGeneratorFilter(metadataGenerator());
}

public MetadataGenerator metadataGenerator() {
    MetadataGenerator metadataGenerator = new MetadataGenerator();
    metadataGenerator.setAssertionConsumerIndex(1);
    // ...
    return metadataGenerator;
}
© www.soinside.com 2019 - 2024. All rights reserved.