不确定您是否已经设法升级到 opensaml 3,但由于我在尝试升级时遇到了这个问题,所以我想我会记录下我发现的内容。
文档很少,因为目前显然这不是他们的优先事项(这里也提到:OpenSaml3 Documentation),我找到的最有用的(即使到目前为止还没有完成)页面是这个:https://wiki.shibboleth.net/confluence/display/OS30/Initialization+and+Configuration
1) 在库net.shibboleth.utilities:java-support 中有一个类SerializeSupport 和一个方法prettyPrintXML
2) 现在通过InitializationService 完成初始化
例如
InitializationService.initialize();
您可以通过XMLObjectProviderRegistrySupport 检索构建器/编组器,例如:
XMLObjectProviderRegistrySupport.getMarshallerFactory()
XMLObjectProviderRegistrySupport.getBuilderFactory()
XMLObjectProviderRegistrySupport.getUnmarshallerFactory()
请注意,opensaml 正在使用 Java Service Provider API。在我的例子中(使用 OSGi 包 org.apache.servicemix.bundles:org.apache.servicemix.bundles.opensaml)来解析 SAML 断言,我添加了包含以下条目的 SPI 配置 META-INF/services/org.opensaml.core.config.Initializer:
org.opensaml.core.xml.config.XMLObjectProviderInitializer
org.opensaml.core.xml.config.GlobalParserPoolInitializer
org.opensaml.saml.config.XMLObjectProviderInitializer
org.opensaml.saml.config.SAMLConfigurationInitializer
org.opensaml.xmlsec.config.XMLObjectProviderInitializer
编辑:以上在测试中工作,但没有在 OSGi 容器中运行。 OSGi 的解决方法:OpenSAML3 resource not found 'default-config.xml' in OSGi container
如果您使用标准库(org.opensaml:opensaml-core、org.opensaml:opensaml-saml-api、org.opensaml:opensaml-saml-impl、...),您可能不需要添加任何 SPI 配置,因为 jar 已经包含具有用于初始化的标准配置的 SPI 配置。
3) 在库org.opensaml:opensaml-security-api 中有一个类BasicCredential。我没有看到在初始化期间提供密钥的替代方法。