【发布时间】:2015-05-10 09:16:11
【问题描述】:
我正在尝试使用以下代码和 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 调试屏幕:
【问题讨论】:
-
对这个问题有什么见解吗?
标签: java object casting shibboleth opensaml