2012-10-30 66 views
2

我目前已经配置好弹簧安全并正常工作。我想让CAS工作,以便我可以在我编写的多个应用程序中进行单点登录。我很困惑如何让cas使用我的自定义userdetailService。用Spring Security实现CAS 3

目前我有,这是我的弹簧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页面上进行更改?任何帮助将非常感激。

感谢

+0

你是什么意思“实现CAS并仍然使用我的自定义用户的详细信息”?如果您使用CAS服务器,则希望该服务器执行身份验证。你的应用程序不会再这样做了。 (但是,也许你想允许匿名访问)。 – Andy

+0

在我的春季安全应用程序中,我有一个passwordencoder和saltource beans来加密我的密码。我还有一个实现了UserDetailsS​​ervice的自定义UserDetails bean。我想我很困惑如何将这些转换为cas,所以一切仍然正常。我还创建了自己的角色,权限等 – blong824

回答

1

下面是建立一个CAS基础设施

  1. 首先,当我建议的步骤,你应该知道的CAS是什么,以及它是如何工作的。查看this article和jasig-webpage。
  2. 然后下载examples from Spring Source,使cas-sample运行,并与它一起玩,以获得更好的感觉。 (我不知道是否有一个自述文件或你如何使用它的春天源网页的相关信息,但肯定是有信息在那里)
  3. 让您的应用对这个简单的CAS-Server进行身份验证(找到CAS网页上的配置示例)
  4. 设置并配置您自己的使用您当前身份验证系统授权用户的CAS服务器。
    • 您可以使用SAML协议认证
    • 后,从CAS角色转移等,以客户端应用程序在您可能需要实现你自己的客户端应用程序适用的角色。
  5. 适应其他应用程序使用CAS-服务器
3

我想你想使用CAS自己的密码+盐编码器进行身份验证的密码。

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

幸运的是,CAS团队已经创建了WAR叠加的方法,这样很容易让用户重新编译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。

祝你好运!