2012-10-30 103 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。

祝你好運!