我怎样才能加上?’;“组织”;申报到SP';s元数据(Spring SAML)?
是否有任何方法可以使用Spring Security将有关组织的信息包含到生成的SP元数据中?因为默认情况下,我看不到它包含在生成的元数据XML中 我现在得到的 我尝试创建一个自定义类我怎样才能加上?’;“组织”;申报到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
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元数据所需要的。