使用opensaml解组saml元数据扩展

时间:2015-05-21 09:55:25

标签: metadata saml-2.0 opensaml

我在saml元数据中创建了一些扩展。我试图使用opensaml2解组xml。我已经创建了扩展的接口,实现类,构建器,marshaller和unmarshaller。然后我使用Configuration.registerObjectProvider

注册了对象提供程序
Configuration.registerObjectProvider(RequestedAudiences.TYPE_NAME, new RequestedAudiencesBuilder(), new RequestedAudiencesMarshaller(), new RequestedAudiencesUnmarshaller());

当我尝试使用下面的代码段

来获取扩展时
List<XMLObject> extensions = spssoDescriptor.getExtensions().getUnknownXMLObjects();

返回

类型的对象
org.opensaml.xml.schema.impl.XSAnyImpl

所以现在我无法从对象中读取任何值。我想获得我创建的实际扩展实现类的对象。 任何人都可以建议我做错了吗?

2 个答案:

答案 0 :(得分:0)

问题是我在创建元数据对象后注册了对象提供程序。因此,在创建元数据对象时,opensaml不知道如何创建所需的扩展对象(RequestedAudiences对象)。在创建元数据对象之前注册对象提供程序解决了问题。

答案 1 :(得分:0)

您可以使用以下scala代码提取信息。

val dato = descriptor.getExtensions().getUnknownXMLObjects.get(0).asInstanceOf[XSAny]
println(dato.getTextContent)