签署Spring SAML SLO响应

时间:2016-01-18 09:31:04

标签: spring-security saml-2.0 spring-saml

我已经配置了包含的示例应用程序,并且能够成功执行IdP和SP发起的SSO,以及SP发起的SLO(使用POST)

但是,当使用Ping Federate发送IdP发起的注销时,它无法说明必须签署注销响应(但是它在OpenAM中成功)。查看SAML消息,注销响应未签名(似乎Ping Federate比OpenAM更严格),根据我的理解,响应应始终签名。

4.4.3.4会话参与者/权限问题 提供商 ... 建议在此步骤中的HTTP交换通过SSL 3.0 [SSL3]或 TLS 1.0 [RFC2246]保持机密性和消息完整性。该 如果使用HTTP POST或Redirect绑定,则必须签名。 HTTP Artifact绑定, 如果使用,还提供了在工件存在时验证响应发布者的替代方法 解除引用。

我的securityContext.xml的相关部分在这里..

        <bean class="org.springframework.security.saml.metadata.ExtendedMetadataDelegate">
            <constructor-arg>
                <bean class="org.opensaml.saml2.metadata.provider.ResourceBackedMetadataProvider">
                    <constructor-arg>
                        <bean class="java.util.Timer"/>
                    </constructor-arg>
                    <constructor-arg>
                        <bean class="org.opensaml.util.resource.ClasspathResource">
                            <constructor-arg value="/metadata/moocow.xml"/>
                        </bean>
                    </constructor-arg>
                    <property name="parserPool" ref="parserPool"/>
                </bean>
            </constructor-arg>
            <constructor-arg>
                <bean class="org.springframework.security.saml.metadata.ExtendedMetadata">
                   <property name="local" value="true"/>
                   <property name="securityProfile" value="metaiop"/>
                   <property name="sslSecurityProfile" value="pkix"/>
                   <property name="sslHostnameVerification" value="default"/>
                   <property name="signMetadata" value="false"/>
                   <property name="signingKey" value="apollo"/>
                   <property name="encryptionKey" value="apollo"/>
                   <property name="requireArtifactResolveSigned" value="false"/>
                   <property name="requireLogoutRequestSigned" value="true"/>
                   <property name="requireLogoutResponseSigned" value="true"/>
                   <property name="idpDiscoveryEnabled" value="false"/>
                </bean>
            </constructor-arg>
        </bean>

但是,我不相信任何这些都适用于签署对IdP的回复。

相关元数据文件......

<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="http___localhost_8080_spring-security-saml2-sample" entityID="http://localhost:8080/spring-security-saml2-sample">
<md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:X509Data>
<ds:X509Certificate>Stripped out for legibility
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</md:KeyDescriptor>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:8080/spring-security-saml2-sample/saml/SingleLogout"/>
<md:SingleLogoutService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect" Location="http://localhost:8080/spring-security-saml2-sample/saml/SingleLogout"/>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:transient</md:NameIDFormat>
<md:AssertionConsumerService Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST" Location="http://localhost:8080/spring-security-saml2-sample/saml/SSO" index="0" isDefault="true"/>
</md:SPSSODescriptor>
</md:EntityDescriptor>

我在这里错过了一些令人眼花缭乱的东西吗?感谢。

约翰

0 个答案:

没有答案