使用 opensaml 解组 saml 元数据扩展

Unmarshalling saml metadata extensions using opensaml

我在 saml 元数据中创建了一些扩展。我正在尝试使用 opensaml2 解组 xml。我已经创建了扩展的接口、实现 class、构建器、编组器和解组器。然后我使用 Configuration.registerObjectProvider

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

当我尝试使用以下代码段获取扩展时

List<XMLObject> extensions = spssoDescriptor.getExtensions().getUnknownXMLObjects();

它returns 类型的对象

org.opensaml.xml.schema.impl.XSAnyImpl

所以现在我无法从对象中读取任何值。我想获得我创建的实际扩展实现 class 的对象。 谁能指出我做错了什么?

问题是我在创建元数据对象后注册了对象提供者。所以在创建元数据对象的时候,opensaml并不知道如何创建需要的扩展对象(RequestedAudiences对象)。在创建元数据对象之前注册对象提供者解决了这个问题。

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

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