我目前已经配置了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…