gpt4 book ai didi

java - OpenSaml 检索错误的 RoleDescriptor 对象

转载 作者:太空宇宙 更新时间:2023-11-04 06:09:05 25 4
gpt4 key购买 nike

我尝试使用以下代码和 OpenSaml 库从服务提供商元数据文件 (SAML 2.0) 检索 RoleDescriptor 节点:

EntitiesDescriptor entityDescriptors = getConfiguration(providerId);
List<RoleDescriptor> roleDescriptors = (List<RoleDescriptor>) entityDescriptors.getEntityDescriptors().get(0).
getRoleDescriptors();
EntityDescriptor ed = entityDescriptors.getEntityDescriptors().get(0);
if(roleDescriptors != null && !roleDescriptors.isEmpty()){
RoleDescriptor r = (RoleDescriptor) roleDescriptors.get(0);
return roleDescriptors.get(0).getErrorURL();
}

我的问题是变量 r 的结尾类型为 org.opensaml.saml2.metadata.impl.SPSSODescriptorImpl 而不是 org.opensaml.saml2.metadata.impl.RoleDescriptorImpl

这是我正在使用的元数据 xml 文件:

<EntityDescriptor entityID="http://mysp.com/resource">

<RoleDescriptor errorURL="http://localhost:8080/dummy-sp/error.jsp">
</RoleDescriptor>

<SPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<KeyDescriptor use="encryption">
<EncryptionMethod Algorithm=
"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256">
</EncryptionMethod>
</KeyDescriptor>

<AssertionConsumerService index="1"
isDefault="true" Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="http://localhost:8080/dummy-sp/dummysp" />

</SPSSODescriptor>

<Organization>
<OrganizationName xml:lang="en">Your Service
</OrganizationName>
<OrganizationDisplayName xml:lang="en">Your
Service
</OrganizationDisplayName>
<OrganizationURL xml:lang="en">http://sp.example.org/
</OrganizationURL>
</Organization>
<ContactPerson contactType="technical">
<GivenName>Your</GivenName>
<SurName>Admin</SurName>
<EmailAddress>admin@example.org</EmailAddress>
</ContactPerson>

</EntityDescriptor>

最后是我的 Eclipse 调试屏幕的扫描:

image

/image/Aujgw.jpg

最佳答案

我尝试使用此处描述的方法验证您的元数据 xml。 https://wiki.surfnet.nl/display/OpenConext/Validating+SAML2+metadata

它表示该元素(添加元数据命名空间后)

RoleDescriptor: Schemas validity error : Element '{urn:oasis:names:tc:SAML:2.0:metadata}RoleDescriptor': The type definition is abstract.

正如 saml 元数据规范所述,

The RoleDescriptor element is an abstract extension point that contains common descriptive information intended to provide processing commonality across different roles. New roles can be defined by extending its abstract RoleDescriptorType complex type

因此您的元数据 xml 中不能包含 RoleDescriptor 元素。您必须使用规范中描述的具体角色(SSO 身份提供商、SSO 服务提供商、身份验证机构、属性机构、策略决策点、从属关系),或者扩展抽象 RoleDescriptor。

因此,由于上述原因,org.opensaml.saml2.metadata.impl.RoleDescriptorImpl是opensaml中的一个抽象类,具体角色的实现扩展了这个抽象类。

关于java - OpenSaml 检索错误的 RoleDescriptor 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28938228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com