developercenter部署cas

一:下載cas maven overlay 4.2 版本

官網下載連接:前端

https://github.com/apereo/cas-overlay-template/tree/4.2git

 

二:將項目導入idea

一、下載的文件爲:cas-overlay-template-4.2.zipgithub

解壓後,獲得文件夾:cas-overlay-template-4.2web

文件夾內容爲:spring

而後將文件夾複製到idea的工做空間(直接用idea在此位置打開也能夠,只是我有一個專用的編輯空間),並更名爲:cas-4.2json

二、使用idea打開項目後端

選擇菜單:file——>open,而後在彈窗中選擇解壓的或者複製的文件夾,OK結束tomcat

而後等待項目下載依賴文件。app

三、因爲此項目使用運行時的依賴,因此預編譯時會報大量錯誤,但不影響編譯運行。前後端分離

 

三:編譯war包

在項目名上右鍵,選擇run maven——>install

而後會在target目錄中生成war包。

安裝後的目錄:

將war包放入tomcat目錄下的webapps中,啓動tomcat就可訪問cas server了

localhost:8080/cas

默認的用戶名/密碼是:casuser/Mellon

 

四:改造cas server

一、認證明現的修改

Cas的認證接口是:AuthenticationHandler

Cas也提供了一些實現,而後不想介入cas源碼太深,因此直接寫了一個類實現AuthenticationHandler,也能夠直接繼承一些抽象類或者實現類。

個人實現類:SCASAuthenticationHandler,主要實現其中authenticate方法,其餘方法能夠模仿其餘實現。

而後登錄頁面除了帳戶和密碼兩個參數外,若是還有其餘參數,也能夠再繼承另外一個類UsernamePasswordCredential,而後再子類中添加本身須要的參數屬性。

個人子類:SSaturnCredential

認證明現和登錄數據對象準備好後,再更改cas配置文件,使單點登陸系統引用咱們本身的實現。

二、首先更改deployerConfigContext.xml文件,在其中找到

<alias name="acceptUsersAuthenticationHandler" alias="primaryAuthenticationHandler" />

而後在下方添加acceptUsersAuthenticationHandler的bean:

<bean id="acceptUsersAuthenticationHandler" class="com.xxx.xxx.SCASAuthenticationHandler"/>

也就是咱們本身的認證處理器SCASAuthenticationHandler。

三、再修改流程定義文件:login-webflow.xml

找到<var name="credential" 

class="org.jasig.cas.authentication.UsernamePasswordCredential"/>

把他註釋掉,再添加bean

<var name="credential" class="com.xxx.xxx.credential.SSaturnCredential"/>

也就是咱們本身定義的登錄數據接收對象。

四、若是登錄頁中添加了其餘參數,則須要在login-webflow.xml流程文件中配置

找到id=「viewLoginForm」視圖節點,而後在binding空間中綁定新增的參數屬性,自定義的數據對象中必定要有此屬性,或者也能夠將required設爲false,意思是此參數不是必須傳入的。

四、將咱們改動過的兩個或三個文件放入WebContent下的相同目錄中(必定要是相同目錄,若是缺乏相關路徑手動創建),這樣使用maven install時,就會根據pom中配置的overlay插件,用咱們改動的文件覆蓋掉cas原來的配置文件。

 

5、添加其餘不須要登錄的功能的url映射(如註冊,找回密碼等)

5.一、在web.xml中找到cas的dispatcherServlet,而後添加其餘功能controller的路徑映射,使前端控制器能夠攔截到。例如:controller中註冊方法被@RequestMapping("/account/register")註釋,則在添加如下servlet-mapping:

5.二、找到路徑和處理器的映射配置:

cas不一樣版本之間,此類的bean配置地點不一樣,cas4.2.X是在applicationContext.xml配置的

如圖在<util:properties>空間中添加屬性<prop key="/account/*">accountController</prop>

5.三、在spring容器中加載accountController的bean,或者使用註釋掃描均可以。

 

6、更改流程中的結束節點,使後臺只返回json字符串,實現先後端分離。

一、分析登錄流程,知道登錄成功後會展現成功頁面,以下配置

使其不展現頁面,則修改成:

原理:將view屬性中的頁面名更改成一個重定向,重定向到一個自定義的controller中(controller的地址須要在handlermapping中配置),而後利用respondbody註解向前臺返回json字符串。

相關文章
相關標籤/搜索