【发布时间】:2015-01-02 02:15:18
【问题描述】:
我已成功运行 Spring Security SAML Extension 示例应用程序。现在,我正在尝试将它集成到我的主应用程序中。在尝试与我的应用程序集成之前,我创建了一个示例应用程序来集成它,它工作正常。在我的示例应用程序中,我使用了来自下载的示例应用程序的密钥库。现在,我尝试使用相同的密钥库,但出现以下错误:
引起:org.springframework.beans.factory.BeanCreationException: 无法自动装配方法:public void org.springframework.security.saml.metadata.MetadataGenerator.setKeyManager(org.springframework.security.saml.key.KeyManager); 嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建 ServletContext 中定义的名称为“keyManager”的 bean 资源[/WEB-INF/spring/securityContext.xml]:bean的实例化 失败的;嵌套异常是 org.springframework.beans.BeanInstantiationException:不能 实例化 bean 类 [org.springframework.security.saml.key.JKSKeyManager]:构造函数 抛出异常;嵌套异常是 java.lang.RuntimeException: Error 在初始化密钥库 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:596) 在 org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:87) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:289) ... 89 更多 org.springframework.beans.factory.BeanCreationException:错误 创建 ServletContext 中定义的名称为“keyManager”的 bean 资源[/WEB-INF/spring/securityContext.xml]:bean的实例化 失败的;嵌套异常是 org.springframework.beans.BeanInstantiationException:不能 实例化 bean 类 [org.springframework.security.saml.key.JKSKeyManager]:构造函数 抛出异常;嵌套异常是 java.lang.RuntimeException: Error 在初始化密钥库 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:278) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1114) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1017) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:504) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 在 org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 在 org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 在 org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1017) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:960) 在 org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:858) 在 org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:553) ... 91 更多原因: org.springframework.beans.BeanInstantiationException:不能 实例化 bean 类 [org.springframework.security.saml.key.JKSKeyManager]:构造函数 抛出异常;嵌套异常是 java.lang.RuntimeException: Error 在初始化密钥库 org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:164) 在 org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:125) 在 org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:270) ... 103 更多原因:java.lang.RuntimeException:错误 在初始化密钥库 org.springframework.security.saml.key.JKSKeyManager.initialize(JKSKeyManager.java:121) 在 org.springframework.security.saml.key.JKSKeyManager.(JKSKeyManager.java:79) 在 sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法)在 sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:526) 在 org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:148) ... 105 更多原因:java.io.IOException: Invalid keystore format 在 sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:650) 在 sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:55) 在 java.security.KeyStore.load(KeyStore.java:1214) 在 org.springframework.security.saml.key.JKSKeyManager.initialize(JKSKeyManager.java:117) ... 111 更多
这是 JKSKeyManager 的 bean 配置:
<bean id="keyManager" class="org.springframework.security.saml.key.JKSKeyManager">
<constructor-arg value="classpath:security/samlKeystore.jks" />
<constructor-arg type="java.lang.String" value="nalle123" />
<constructor-arg>
<map>
<entry key="apollo" value="nalle123" />
</map>
</constructor-arg>
<constructor-arg type="java.lang.String" value="apollo" />
</bean>
谁能帮我解决导致此错误的原因?
【问题讨论】:
标签: spring spring-security spring-saml