java - 使用 Spring Security 3 实现 CAS

标签 java spring configuration spring-security cas

我目前已配置 Spring Security 并且工作正常。我想让 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页面上更改什么?任何帮助将不胜感激。

谢谢

最佳答案

我认为您希望 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。

祝你好运!

关于java - 使用 Spring Security 3 实现 CAS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13147249/

相关文章:

java - POST 请求中的 %5B 和 %5D 代表什么?

java - 如何提高使用 Spring 将 REF CURSOR 检索到 Java 中的性能?

mobile - 为什么 Nginx 仅针对移动设备给出 502 错误?

jvm - 如何找到 OpenJDK JVM(热点)代码中包含 main() 方法的类?

java - Java 设置文件存储在哪里?

java - 获取 Action 监听器中的系统时间

java - 使用 Bootstrap 在 Spring 元素中不显示图标

java - Spring、Hibernate、JPA - 为什么我不使用实体管理器,为什么 casacdeType.Persist 只能与实体管理器一起使用

方向变化的android语言环境变化

exception - 如何不在 Logback 中记录特定类型的异常?