Spring security 创建名为“org.springframework.security.saml.trust.h ttpclient.TLSProtocolSocketFactory”的bean时出错
我正在尝试配置仅支持https的应用程序,并且在securityContext.xml文件中添加了以下配置:Spring security 创建名为“org.springframework.security.saml.trust.h ttpclient.TLSProtocolSocketFactory”的bean时出错,spring-security,spring-saml,Spring Security,Spring Saml,我正在尝试配置仅支持https的应用程序,并且在securityContext.xml文件中添加了以下配置: <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="org.apache.commons.httpclient.protocol.Protocol"/> <property n
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="org.apache.commons.httpclient.protocol.Protocol"/>
<property name="targetMethod" value="registerProtocol"/>
<property name="arguments">
<list>
<value>https</value>
<bean class="org.apache.commons.httpclient.protocol.Protocol">
<constructor-arg value="https"/>
<constructor-arg>
<bean class="org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory"/>
</constructor-arg>
<constructor-arg value="443"/>
</bean>
</list>
</property>
</bean>
运行服务器时,我遇到以下异常:
原因:org.springframework.beans.factory.BeanCreationException:创建名为“org.apache.commons.httpclient.protocol.Pr”的bean时出错
在ServletContext资源[/WEB-INF/securityContext.xml]中定义的otocol59a20678]:无法创建内部bean“org.springframework.security.s”
[org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory5658808]类型的“[org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory]
在设置构造函数参数时;嵌套异常为org.springframework.beans.factory.BeanCreationException:使用n创建bean时出错
在ServletContext资源[/WEB-INF/secur]中定义的名称为“org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory5658808”
xml]:bean实例化失败;嵌套异常为org.springframework.beans.BeanInstantiationException:无法实例化
te bean类[org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory]:未找到默认构造函数;嵌套异常
是java.lang.NoSuchMethodException:org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory。
位于org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanBeanDefinitionValueResolver.java:281
位于org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessaryBeanDefinitionValueResolver.java:12
0
位于org.springframework.beans.factory.support.ConstructorResolver.resolveConstructorArgumentsConstructorResolver.java:630
位于org.springframework.beans.factory.support.ConstructorResolver.AutoWireConstructorResolver.java:148
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.AutoWireConstructorAbstractAutoWireCapableBeanFactory
ry.java:1035
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstanceAbstractAutowireCapableBeanFactor
y、 爪哇:939
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBeanAbstractAutowireCapableBeanFactory.java
:485
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanAbstractAutowireCapableBeanFactory.java:4
56
位于org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanBeanDefinitionValueResolver.java:270
... 还有24个
原因:org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.security.saml.trust.h”的bean时出错
在ServletContext资源[/WEB-INF/securityContext.xml]中定义的ttpclient.TLSProtocolSocketFactory5658808]:bean实例化失败;
嵌套异常为org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.security.sa]
ml.trust.httpclient.TLSProtocolSocketFactory]:未找到默认构造函数;嵌套异常是java.lang.NoSuchMethodException:org.spring
framework.security.saml.trust.httpclient.TLSProtocolSocketFactory。
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBeanAbstractAutoWireCapableBeanFactory.j
艾娃:997
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstanceAbstractAutowireCapableBeanFactor
y、 爪哇:943
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBeanAbstractAutowireCapableBeanFactory.java
:485
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanAbstractAutowireCapableBeanFactory.java:4
56
位于org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveInnerBeanBeanDefinitionValueResolver.java:270
... 32多
原因:org.springframework.beans.BeanInstantiationException:无法实例化bean类[org.springframework.security.saml.trust.h]
ttpclient.TLSProtocolSocketFactory]:未找到默认构造函数;嵌套异常是java.lang.NoSuchMethodException:org.springframework。
security.saml.trust.httpclient.TLSProtocolSocketFactory。
位于org.springframework.beans.factory.support.SimpleInstanceStrategy.InstanceSimpleInstanceStrategy.java:72
位于org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.InstanceBeanAbstractAutoWireCapableBeanFactory.j
艾娃:990
... 36多
原因:java.lang.NoSuchMethodException:org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory。
位于java.lang.Class.getConstructor0Class.java:2971
位于java.lang.Class.getDeclaredConstructorClass.java:2165
在org.springframework.beans.factor上
y、 support.SimpleInstanceStrategy.InstanceSimpleInstanceStrategy.java:67
... 37多
错误listenerStart
你能指导我如何纠正这个问题吗。?我有最新的主干。TLSProtocolSocketFactory需要多个构造函数参数,而您没有指定这些参数,这就是配置失败的原因
如果希望Spring SAML自动配置TLSProtocolSocketFactory,只需按照中的说明操作,并包含以下bean,而不是调用FactoryBean的方法:
谢谢你,伙计。请给我发送一个关于如何指定X509KeyManager和X509TrustManager的示例。这将大有帮助。而且,如果您有任何javascript身份验证客户端用于测试此功能,请与我共享。许多人感谢我更新了最新Spring SAML版本的答案-KeyManager现在在TLSProtocolSocketFactory中内部构建,因此您不再需要提供它。如果您还有其他问题,请单独打开。您的问题@Kannan解决了吗?
<bean class="org.springframework.security.saml.trust.httpclient.TLSProtocolConfigurer"/>
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetClass" value="org.apache.commons.httpclient.protocol.Protocol"/>
<property name="targetMethod" value="registerProtocol"/>
<property name="arguments">
<list>
<value>https</value>
<bean class="org.apache.commons.httpclient.protocol.Protocol">
<constructor-arg value="https"/>
<constructor-arg>
<bean class="org.springframework.security.saml.trust.httpclient.TLSProtocolSocketFactory">
<constructor-arg ref="keyManager"/>
<constructor-arg><null/></constructor-arg>
<constructor-arg value="default"/>
</bean>
</constructor-arg>
<constructor-arg value="443"/>
</bean>
</list>
</property>
</bean>