使用spring-saml的mdui元数据扩展

时间:2016-07-21 13:03:28

标签: spring-security spring-saml

我需要使用Spring SAML Extension配置SP,这次使用新的idp admin请求。 他让我向他发送带有这样的mdui值的元数据:

<md:SPSSODescriptor> <Extensions>  <mdui:UIInfo>
<mdui:DisplayName xml:lang="it">desc</mdui:DisplayName>
<mdui:InformationURL xml:lang="it">http://xxxx</mdui:InformationURL>
</Extensions>
....
</SPSSODescriptor>

我认为我可以使用手动添加值的非签名元数据执行此操作。 这是唯一的方法,还是可以通过配置选项获得相同的结果? 提前谢谢。

的Alessandro

1 个答案:

答案 0 :(得分:0)

签出spring-security-saml的MetadataGenerator类。它有一个buildExtensions方法,如果已配置,则使用DiscoveryResponse扩展名填充OpenSAML的Extensions对象。您可以扩展MetadataGenerator并挂钩您的配置。

这是buildExtensions方法的摘录:

protected Extensions buildExtensions(String entityBaseURL, String entityAlias) {

    boolean include = false;
    Extensions extensions = new ExtensionsBuilder().buildObject();

    // Add discovery
    if (isIncludeDiscoveryExtension()) {
        DiscoveryResponse discoveryService = getDiscoveryService(entityBaseURL, entityAlias);
        extensions.getUnknownXMLObjects().add(discoveryService);
        include = true;
    }

    if (include) {
        return extensions;
    } else {
        return null;
    }

}

如果您正在使用Spring Boot,则可以使用此库配置SAML并提供自定义MetadataGenerator:spring-boot-security-saml

配置看起来像:

    @Configuration
    public static class MyServiceProviderConfig extends ServiceProviderConfigurerAdapter {
        @Override
        public void configure(ServiceProviderSecurityBuilder serviceProvider) throws Exception {
            serviceProvider
                .metadataGenerator(customGenerator);
        }
    }