- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我尝试使用以下代码和 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 调试屏幕的扫描:
最佳答案
我尝试使用此处描述的方法验证您的元数据 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/
我尝试使用以下代码和 OpenSaml 库从服务提供商元数据文件 (SAML 2.0) 检索 RoleDescriptor 节点: EntitiesDescriptor entityDescripto
我是一名优秀的程序员,十分优秀!