不确定您是否已经升级到opensaml 3,但由于我在尝试升级时遇到了这个问题,所以我想记录一下我发现的内容。
很少有文档,因为显然目前它们不是一个优先事项(也在这里提到:OpenSaml3 Documentation),我发现的最有用的页面(即使远远不完整)是这个页面:https://wiki.shibboleth.net/confluence/display/OS30/Initialization+and+Configuration
1)有一个类SerializeSupport
,其中包含一个方法prettyPrintXML
,在lib net.shibboleth.utilities:java-support
中。
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的方法:在OSGi容器中找不到OpenSAML3资源'default-config.xml'
如果您使用标准库(org.opensaml:opensaml-core
、org.opensaml:opensaml-saml-api
、org.opensaml:opensaml-saml-impl
等),则可能不需要添加任何SPI配置,因为这些jar已经包含了带有初始化标准配置的SPI配置。
3)在lib org.opensaml:opensaml-security-api
中有一个BasicCredential
类。我没有看到提供在初始化期间提供密钥的替代方法。
XMLObjectProviderRegistrySupport.getMarshallerFactory().getMarshaller(authnRequest.getElementQName())
- GobliinsInitializationService.initialize();
吗? - Xin MengSOAPHelper
和WSSecurityHelper
类。有人知道这两个类去哪了吗? - Serbanorg.opensaml.soap.util.SOAPSupport
和org.opensaml.soap.wssecurity.util.WSSecuritySupport
https://build.shibboleth.net/nexus/content/sites/site/java-opensaml/3.2.0/apidocs/org/opensaml/soap/util/SOAPSupport.html https://build.shibboleth.net/nexus/content/sites/site/java-opensaml/3.2.0/apidocs/org/opensaml/soap/wssecurity/util/WSSecuritySupport.html - Clauds