Bar*_*pan 4 opensaml spring-boot spring-security-saml2
在我们的应用程序中,我们尝试升级到 Spring boot 2,我们使用 spring-security-saml2-core:1.0.4.RELEASE,在运行应用程序时,我们遇到以下异常。看起来,classpaath 上有两个 jar xmltooling-1.4.6和opensaml-core-3.3.0,它们具有相同的文件default-config.xml。在这种情况下,类加载器碰巧将opensaml-core-3.3.0放在xmltooling-1.4.6.jar 之前,并且default-config.xml加载错误
<ObjectProviders>
<ObjectProvider qualifiedName="xt:DEFAULT">
<BuilderClass className="org.opensaml.core.xml.schema.impl.XSAnyBuilder"/>
<MarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyMarshaller"/>
<UnmarshallingClass className="org.opensaml.core.xml.schema.impl.XSAnyUnmarshaller"/>
</ObjectProvider> </ObjectProviders>
java.lang.ClassCastException: org.opensaml.core.xml.schema.impl.XSAnyBuilder cannot be cast to org.opensaml.xml.XMLObjectBuilder
at org.opensaml.xml.XMLConfigurator.initializeObjectProviders(XMLConfigurator.java:236)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:182)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:166)
at org.opensaml.xml.XMLConfigurator.load(XMLConfigurator.java:143)
at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:203)
at org.opensaml.DefaultBootstrap.initializeXMLTooling(DefaultBootstrap.java:186)
at org.opensaml.DefaultBootstrap.bootstrap(DefaultBootstrap.java:92)
at org.opensaml.PaosBootstrap.bootstrap(PaosBootstrap.java:27)
at org.springframework.security.saml.SAMLBootstrap.postProcessBeanFactory(SAMLBootstrap.java:42).
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?请..
小智 6
请参阅https://issues.shibboleth.net/jira/browse/OSJ-152
opensamlV2版本使用xmltooling.jar.
opensamlV3 版本使用的opensaml-soap-impl.jar包名称与xmltooling.jar
例子:
opensaml-soap-impl.jar 使用--> org.opensaml.core.xml.XMLObjectBuilder
xmltooling.jar使用--> org.opensaml.xml.XMLObjectBuilder
根本原因:您的类路径同时具有 v2 和 v3 版本的opensaml. 这是例外的原因classcast。
解决方案:
理想情况下,您不需要同时拥有opensaml. 由于 Maven 依赖管理,它可能会意外发生。删除其中之一。
opensamlv2版本兼容并且您不想升级,请排除opesamlv3以下 jar。opensamlV2相关的 jar| 归档时间: |
|
| 查看次数: |
10699 次 |
| 最近记录: |