3

我目前已配置弹簧安全性并正常工作。我想让 CAS 工作,这样我就可以在我编写的多个应用程序中进行单点登录。我很困惑如何让 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>

文档令人困惑。如何从一个工作的 spring-security 应用程序转到一个实现 cas 并仍然使用我的自定义用户详细信息的应用程序?我还需要在 jsp 页面上进行哪些更改?任何帮助将非常感激。

谢谢

4

2 回答 2

4

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

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

幸运的是,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。

祝你好运!

于 2012-11-04T12:19:38.490 回答
2

以下是我在设置 CAS 基础架构时推荐的步骤

  1. 首先,您应该了解 CAS 是什么,以及它是如何工作的。查看这篇文章和 jasig-webpage。
  2. 然后从 Spring Source 下载示例,运行 cas-sample,并使用它来更好地感受它。(我不确定是否有自述文件,或者您在 spring 源网页上获得有关如何使用它的信息,但肯定有信息)
  3. 让您的应用针对这个简单的 CAS-Server 进行身份验证(在 CAS 网页上查找配置示例)
  4. 设置和配置您自己的 CAS-Server,它使用您当前的身份验证系统来授权用户。
    • 身份验证后,您可以使用 SAML 协议将角色等从 CAS 传输到客户端应用程序
    • 要在客户端应用程序中应用角色,您可能需要自行实现。
  5. 调整其他应用程序以使用 CAS-Server
于 2012-10-31T22:06:38.867 回答