【发布时间】:2017-10-21 02:14:40
【问题描述】:
我正在我的 Web 应用程序中实现 Spring SAML,该应用程序已经实现了 Spring 安全性,因此我现在有 2 个身份验证管理器。由于 spring 总是引用最后声明的 authenticationManager,我找到了将一个 authenticationManager 定义为 bean 的解决方案。
以下是我转换为 bean 之前的 AuthenticationManager:
<authentication-manager alias="samlAuthenticationManager">
<!-- Register authentication manager for SAML provider -->
<authentication-provider ref="samlAuthenticationProvider"/>
<!-- Register authentication manager for administration UI -->
<authentication-provider>
<user-service id="adminInterfaceService">
<user name="admin" password="admin" authorities="ROLE_ADMIN"/>
</user-service>
</authentication-provider>
</authentication-manager>
以下是我转换为bean后的代码:
<beans:bean id="samlAuthenticationManager" class="org.springframework.security.authentication.ProviderManager">
<beans:constructor-arg>
<beans:list>
<beans:bean class="org.springframework.security.saml.SAMLAuthenticationProvider">
<beans:property name="userDetails" value="adminInterfaceService"/>
</beans:bean>
</beans:list>
</beans:constructor-arg>
</beans:bean>
<user-service id="adminInterfaceService">
<user name="admin" password="admin" authorities="ROLE_ADMIN"/>
</user-service>
身份验证提供者定义如下:
<beans:bean id="samlAuthenticationProvider" class="org.springframework.security.saml.SAMLAuthenticationProvider">
<!-- OPTIONAL property: can be used to store/load user data after login -->
<!--
<beans:property name="userDetails" ref="bean" />
-->
</beans:bean>
我收到以下异常:
无法将“java.lang.String”类型的值转换为所需类型 'org.springframework.security.saml.userdetails.SAMLUserDetailsService' 对于属性'userDetails'
请帮助解决同样的问题。我将非常感激。
提前致谢
【问题讨论】:
标签: java spring spring-security saml-2.0 spring-saml