使用Spring Security 3实施CAS - java

我目前已经配置了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 Apps都使用SSL。

祝好运!

春季安全值得付出努力 - java

我一直在关注春季安全性,并注意到它是多么大的包装。我想知道是否值得花一些时间来加强这一点。Spring Security 2.0+为您节省了大量时间,还是以任何方式简化了您的项目? java参考方案 几年前,我考虑将其用于Spring项目,并选择了它,因为它是一个非常繁琐的框架,恕我直言,它提供的灵活性不是必需的。 (据我估计)减少我们自己的身份验证/授权的…

Java中的“ <<”运算符 - java

最喜欢的语句来自Java的Character类:(1 << Character.PARAGRAPH_SEPARATOR)) >> type PARAGRAPH_SEPARATOR是字节,type是整数。这句话中的操作员,他们做什么?如何以及在哪里可以使用这些运算符?这是oracles java.lang.Character文档。该类中…

页面加载而不是提交时发生struts验证 - java

请原谅我;我对Struts有点陌生。我遇到一个问题,即页面加载而不是我实际提交表单时发生了验证。我整天都在论坛上搜寻和搜寻,没有任何运气。我显然做错了一些事情,应该很容易确定,但是我还没有发现问题所在。这是我的struts.xml的片段:<action name="*Test" method="{1}" clas…

当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java

我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…

DataSourceTransactionManager和JndiObjectFactoryBean和JdbcTemplate的用途是什么? - java

以下的用途是什么:org.springframework.jdbc.core.JdbcTemplate org.springframework.jdbc.datasource.DataSourceTransactionManager org.springframework.jndi.JndiObjectFactoryBean <tx:annotatio…