我目前配置了spring security并且工作正常。我想让CAS工作,所以我可以在我编写的多个应用程序上进行单点登录。我很困惑如何使用我的自定义userdetailService。
目前我有这是我的spring-security.xml
<authentication-manager alias="authManager">
<authentication-provider user-service-ref="userDetailsService">
<password-encoder ref="passwordEncoder">
<salt-source ref="saltSource"/>
</password-encoder>
</authentication-provider>
</authetication-manager>
从我发现的所有cas示例中,他们都说要以这种方式实现管理:
<beans:bean id="casAuthenticationProvider" class="org.springframework.security.cas.authentication.CasAuthenticationProvider">
<beans:property name="authenticationUserDetailsService">
<beans:bean class="org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper">
<beans:constructor-arg ref="userDetailsService"/>
</beans:bean>
</beans:property>
<beans:property name="serviceProperties" ref="serviceProperties"/>
<beans:property name="ticketValidator">
<beans:bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator">
<beans:constructor-arg index="0" value="https://localhost:8443/cas"/>
</beans:bean>
</beans:property>
<beans:property name="key" value="1234554321"/>
</beans:bean>
<authentication-manager alias="authManager">
<authentication-provider ref="casAuthenticationProvider"/>
</authentication-manager>
文档令人困惑。如何从一个有效的弹簧安全应用程序转到实现cas的应用程序并仍然使用我的自定义用户详细信息?另外我还需要在jsp页面上进行哪些更改?任何帮助将不胜感激。
谢谢
答案 0 :(得分:3)
我认为您希望CAS使用您自己的密码+ salt编码器验证密码。
不幸的是,它不是一个简单的配置,并且配置不在您的Spring应用程序中。 您需要重新编译CAS以包含您的自定义密码+ salt编码器。 因此,当Spring调用CAS进行身份验证时,将使用相同的自定义密码+ salt编码器。
幸运的是,CAS团队已经创建了WAR Overlay方法,以便用户可以轻松地重新编译CAS服务器以包含自定义密码+盐编码器
您需要非常耐心地遵循这些步骤并确保您的系统具有Maven2 你不需要下载任何库,因为Maven会处理这个问题。 WAR Overlay方法的基本思想是创建一个maven控制的文件夹,您可以在其中创建子文件夹以添加自定义Java库。
Maven将用于重新编译自定义Java代码和CAS文件,以生成一个WAR文件,您可以将其发布到SSL服务器。
确保CAS和您的Spring应用程序都使用SSL。
祝你好运!答案 1 :(得分:1)
以下是我在建立CAS基础设施时建议的步骤