Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我怎样才能加上?’;“组织”;申报到SP';s元数据(Spring SAML)?_Spring_Spring Security_Saml 2.0_Spring Saml - Fatal编程技术网

我怎样才能加上?’;“组织”;申报到SP';s元数据(Spring SAML)?

我怎样才能加上?’;“组织”;申报到SP';s元数据(Spring SAML)?,spring,spring-security,saml-2.0,spring-saml,Spring,Spring Security,Saml 2.0,Spring Saml,是否有任何方法可以使用Spring Security将有关组织的信息包含到生成的SP元数据中?因为默认情况下,我看不到它包含在生成的元数据XML中 我现在得到的 我尝试创建一个自定义类SAMLMetadataGenerator,它扩展了框架的类MetadataGenerator,然后尝试用以下方式覆盖buildExtensions方法: public class SAMLMetadataGenerator extends MetadataGenerator { @Override

是否有任何方法可以使用Spring Security将有关组织的信息包含到生成的SP元数据中?因为默认情况下,我看不到它包含在生成的元数据XML中

我现在得到的 我尝试创建一个自定义类
SAMLMetadataGenerator
,它扩展了框架的类
MetadataGenerator
,然后尝试用以下方式覆盖
buildExtensions
方法:

public class SAMLMetadataGenerator extends MetadataGenerator {

   @Override
   protected Extensions buildExtensions(String entityBaseURL, String entityAlias) {
        super.setIncludeDiscoveryExtension(true);
        Extensions extensions = super.buildExtensions(entityBaseURL, entityAlias);
        if (extensions != null)
            extensions.getUnknownXMLObjects().add(generateOrganization());

        return extensions;
   }

   private Organization generateOrganization() {
    OrganizationBuilder organizationBuilder = new OrganizationBuilder();
    Organization organization = organizationBuilder.buildObject();

    OrganizationNameBuilder organizationNameBuilder = new OrganizationNameBuilder();
    OrganizationName organizationName = organizationNameBuilder.buildObject();
    organizationName.setName(new LocalizedString("ACME", "en"));

    OrganizationDisplayNameBuilder displayNameBuilder = new OrganizationDisplayNameBuilder();
    OrganizationDisplayName organizationDisplayName = displayNameBuilder
            .buildObject();
    organizationDisplayName.setName(new LocalizedString("ACME Corporation", "en"));

    OrganizationURLBuilder organizationURLBuilder = new OrganizationURLBuilder();
    OrganizationURL organizationURL = organizationURLBuilder.buildObject();
    organizationURL.setURL(new LocalizedString("http://spid.serviceprovider.it", "it"));

    organization.getOrganizationNames().add(organizationName);
    organization.getDisplayNames().add(organizationDisplayName);
    organization.getURLs().add(organizationURL);
    return organization;
   }
}
这样,生成的SP元数据将:

<md:EntityDescriptor
    xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="com_xegiy84105_spring_sp" entityID="com:xegiy84105:spring:sp">
    <!-- Other things here -->
    <md:SPSSODescriptor AuthnRequestsSigned="true" WantAssertionsSigned="true" protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <md:Extensions>
            <idpdisco:DiscoveryResponse
                xmlns:idpdisco="urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol" Binding="urn:oasis:names:tc:SAML:profiles:SSO:idp-discovery-protocol" Location="http://localhost:8091/DM-WEB/saml/login?disco=true" index="0"/>
            <md:Organization>
                <md:OrganizationName xml:lang="en">ACME</md:OrganizationName>
                <md:OrganizationDisplayName xml:lang="en">ACME Corporation</md:OrganizationDisplayName>
                <md:OrganizationURL xml:lang="it">http://spid.serviceprovider.it</md:OrganizationURL>
            </md:Organization>
        </md:Extensions>
        <!-- Other things here -->
    </md:SPSSODescriptor>
</md:EntityDescriptor>

顶点
ACME公司
http://spid.serviceprovider.it
它应该是怎样的 但是插入“组织”块时,不应被
包围,并且应将其作为
块的直接子块放置,类似于下面的片段

<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
    entityID="https://spid.serviceprovider.it"
    ID="_0j40cj0848d8e3jncjdjss...">
    <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
        [...]
    </ds:Signature>
    <md:SPSSODescriptor
        protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol"
        AuthnRequestsSigned="true"
        WantAssertionsSigned="true">
        [...]
    </md:SPSSODescriptor>
    <md:Organization>
        <OrganizationName xml:lang="it">Service provider</OrganizationName>
        <OrganizationDisplayName xml:lang="it">Nome service provider</OrganizationDisplayName>
        <OrganizationURL xml:lang="it">http://spid.serviceprovider.it</OrganizationURL>
    </md:Organization>
</md:EntityDescriptor>

[...]
[...]
服务提供商
Nome服务提供商
http://spid.serviceprovider.it
实现这一目标的正确方法是什么?
谢谢。

它出现在扩展中的原因是:

extensions.getUnknownXMLObjects().add(generateOrganization());
根据以下说明,您可以使用:

generateMetadata()
返回一个,您可以将组织添加到其中:

setOrganization(generateOrganization());

extensions.getUnknownXMLObjects().add(generateOrganization());这就是为什么它在扩展中。将其添加到super insteadHi@codebrane。。谢谢这正是我正确生成SP元数据所需要的。