用Spring Security实现CAS 3

时间:2012-10-30 20:40:12

标签: java spring configuration spring-security cas

我目前配置了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页面上进行哪些更改?任何帮助将不胜感激。

谢谢

2 个答案:

答案 0 :(得分:3)

我认为您希望CAS使用您自己的密码+ salt编码器验证密码。

不幸的是,它不是一个简单的配置,并且配置不在您的Spring应用程序中。 您需要重新编译CAS以包含您的自定义密码+ salt编码器。 因此,当Spring调用CAS进行身份验证时,将使用相同的自定义密码+ salt编码器。

幸运的是,CAS团队已经创建了WAR Overlay方法,以便用户可以轻松地重新编译CAS服务器以包含自定义密码+盐编码器

文档在这里 https://wiki.jasig.org/display/CASUM/Best+Practice+-+Setting+Up+CAS+Locally+using+the+Maven2+WAR+Overlay+Method

您需要非常耐心地遵循这些步骤并确保您的系统具有Maven2 你不需要下载任何库,因为Maven会处理这个问题。 WAR Overlay方法的基本思想是创建一个maven控制的文件夹,您可以在其中创建子文件夹以添加自定义Java库。

Maven将用于重新编译自定义Java代码和CAS文件,以生成一个WAR文件,您可以将其发布到SSL服务器。

确保CAS和您的Spring应用程序都使用SSL。

祝你好运!

答案 1 :(得分:1)

以下是我在建立CAS基础设施时建议的步骤

  1. 首先,您应该了解CAS是什么,以及它是如何工作的。查看this article和jasig-webpage。
  2. 然后下载examples from Spring Source,让cas样本运行,并使用它来更好地感受它。 (我不确定是否有自述文件,或者您在弹簧源网页上获得如何使用它的信息,但肯定有信息)
  3. 使您的应用针对此简单CAS-Server进行身份验证(在CAS网页上查找配置示例)
  4. 设置并配置您自己的CAS服务器,该服务器使用您当前的身份验证系统来授权用户。
    • 您可以使用SAML协议在身份验证后将角色等从CAS转移到客户端应用
    • 要在客户端应用中应用角色,您可能需要自己实现这些角色。
  5. 调整其他应用以使用CAS-Server