1. 程式人生 > >單點登入之服務端配置(一修改埠)

單點登入之服務端配置(一修改埠)

1.開源單點登入系統CAS入門

1.1 什麼是單點登入

單點登入(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。

我們目前的系統存在諸多子系統,而這些子系統是分別部署在不同的伺服器中,那麼使用傳統方式的session是無法解決的,我們需要使用相關的單點登入技術來解決。

1.2 什麼是CAS

CAS 是 Yale 大學發起的一個開源專案,旨在為 Web 應用系統提供一種可靠的單點登入方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個專案。CAS 具有以下特點:

【1】開源的企業級單點登入解決方案。

【2】CAS Server 為需要獨立部署的 Web 應用。

【3】CAS Client 支援非常多的客戶端(這裡指單點登入系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

從結構上看,CAS 包含兩個部分: CAS Server 和 CAS Client。CAS Server 需要獨立部署,主要負責對使用者的認證工作;CAS Client 負責處理對客戶端受保護資源的訪問請求,需要登入時,重定向到 CAS Server。下圖是 CAS 最基本的協議過程:

SSO單點登入訪問流程主要有以下步驟:

1. 訪問服務:SSO客戶端傳送請求訪問應用系統提供的服務資源。

2. 定向認證:SSO客戶端會重定向使用者請求到SSO伺服器。

3. 使用者認證:使用者身份認證。

4. 發放票據:SSO伺服器會產生一個隨機的Service Ticket。

5. 驗證票據:SSO伺服器驗證票據Service Ticket的合法性,驗證通過後,允許客戶端訪問服務。

6. 傳輸使用者資訊:SSO伺服器驗證票據通過後,傳輸使用者認證結果資訊給客戶端。

https://blog.csdn.net/lld2002/article/details/46226437

ST:(service tickect)  用於驗證 CAS的客戶端是否是真正的客戶端。  

TGT:使用者證明自己在CAS服務端登入過,存在cookie儲存起來的。

1.3 CAS服務端部署

Cas服務端其實就是一個war包。

博主已經整理好資源 下載直接用 連結:https://pan.baidu.com/s/188AWwMfREjaqo2fysZdHnA 在此用4.0.0版本

 

cas.war放入tomcat目錄下的webapps下。啟動tomcat自動解壓war包。瀏覽器輸入http://localhost:8080/cas/login  ,可看到登入頁面

注:啟動登入成功之後務必把cas.war刪除掉

 

這裡有個固定的使用者名稱和密碼   casuser /Mellon

登入成功後會跳到登入成功的提示頁面

 

1.4 CAS服務端配置

1.4.1埠修改

如果我們不希望用8080埠訪問CAS, 可以修改埠

(1)修改TOMCAT的埠

開啟tomcat 目錄 conf\server.xml  找到下面的配置

 

將埠8080,改為89

(1)修改CAS配置檔案

(1)修改CAS配置檔案

修改cas的WEB-INF/cas.properties

server.name=http://localhost:89

CAS預設使用的是HTTPS協議,如果使用HTTPS協議需要SSL安全證書(需向特定的機構申請和購買) 。如果對安全要求不高或是在開發測試階段,可使用HTTP協議。我們這裡講解通過修改配置,讓CAS使用HTTP協議。1.4.2去除https認證

(1)修改cas的WEB-INF/deployerConfigContext.xml

找到下面的配置

<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient"/>

(2)修改cas的/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml這裡需要增加引數p:requireSecure="false",requireSecure屬性意思為是否需要安全驗證,即HTTPS,false為不採用

找到下面配置.

<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
      p:cookieSecure="true"
      p:cookieMaxAge="-1"
      p:cookieName="CASTGC"
      p:cookiePath="/cas" />

引數p:cookieMaxAge="-1",是COOKIE的最大生命週期,-1為無生命週期,即只在當前開啟的視窗有效,關閉或重新開啟其它視窗,仍會要求驗證。可以根據需要修改為大於0的數字,比如3600等,意思是在3600秒內,開啟任意視窗,都不需要驗證。引數p:cookieSecure="true",同理為HTTPS驗證相關,TRUE為採用HTTPS驗證,FALSE為不採用https驗證。

我們這裡將cookieSecure改為false ,  cookieMaxAge 改為3600

(3)修改cas的WEB-INF/spring-configuration/warnCookieGenerator.xml

找到下面配置

<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
  p:cookieSecure="true"
  p:cookieMaxAge="-1"
  p:cookieName="CASPRIVACY"
  p:cookiePath="/cas" />

值得注意的是:我們這裡將cookieSecure改為false ,  cookieMaxAge 改為3600

配置完http方式訪問之後頁面上的 提示還是存在的,如果我們之後會對登入介面樣式完全改版,所以可以不用管它。如果還是需要把它去掉的話,cas統一認證的登陸頁面位於:cas目錄/WEB-INF/view/jsp/default 資料夾裡,其中ui/casLoginView.jsp為登陸頁面。我們找到這段程式碼刪掉即可。

<c:if test="${not pageContext.request.secure}">
  <div id="msg" class="errors">
    <h2>Non-secure Connection</h2>
    <p>You are currently accessing CAS over a non-secure connection.  Single Sign On WILL  NOT WORK.  In order to have single sign on work, you MUST log in over HTTPS.</p>
  </div>
</c:if>

1.開源單點登入系統CAS入門

1.1 什麼是單點登入

單點登入Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。

我們目前的系統存在諸多子系統,而這些子系統是分別部署在不同的伺服器中,那麼使用傳統方式的session是無法解決的,我們需要使用相關的單點登入技術來解決。

 

token   ticket.

1.2 什麼是CAS

CAS  Yale 大學發起的一個開源專案,旨在為 Web 應用系統提供一種可靠的單點登入方法,CAS  2004  12 月正式成為 JA-SIG 的一個專案。CAS 具有以下特點:

1】開源的企業級單點登入解決方案。

2CAS Server 為需要獨立部署的 Web 應用。

3CAS Client 支援非常多的客戶端(這裡指單點登入系統中的各個 Web 應用),包括 Java, .Net, PHP, Perl, Apache, uPortal, Ruby 等。

從結構上看,CAS 包含兩個部分: CAS Server  CAS ClientCAS Server 需要獨立部署,主要負責對使用者的認證工作;CAS Client 負責處理對客戶端受保護資源的訪問請求,需要登入時,重定向到 CAS Server。下圖是 CAS 最基本的協議過程:


 

SSO單點登入訪問流程主要有以下步驟:

1. 訪問服務:SSO客戶端傳送請求訪問應用系統提供的服務資源。

2. 定向認證:SSO客戶端會重定向使用者請求到SSO伺服器。

3. 使用者認證:使用者身份認證。

4. 發放票據:SSO伺服器會產生一個隨機的Service Ticket

5. 驗證票據:SSO伺服器驗證票據Service Ticket的合法性,驗證通過後,允許客戶端訪問服務。

6. 傳輸使用者資訊:SSO伺服器驗證票據通過後,傳輸使用者認證結果資訊給客戶端。

 

https://blog.csdn.net/lld2002/article/details/46226437

 

ST:(service tickect  用於驗證 CAS的客戶端是否是真正的客戶端。  

TGT:使用者證明自己在CAS服務端登入過,存在cookie儲存起來的。

1.3 CAS服務端部署

Cas服務端其實就是一個war包。

博主已經整理好資源 下載直接用 連結:https://pan.baidu.com/s/188AWwMfREjaqo2fysZdHnA 在此用4.0.0版本

 

cas.war放入tomcat目錄下的webapps下。啟動tomcat自動解壓war包。瀏覽器輸入http://localhost:8080/cas/login  ,可看到登入頁面

注:啟動登入成功之後務必把cas.war刪除掉


這裡有個固定的使用者名稱和密碼   casuser /Mellon

 

登入成功後會跳到登入成功的提示頁面


1.4 CAS服務端配置

1.4.1埠修改

如果我們不希望用8080埠訪問CAS, 可以修改埠

(1)修改TOMCAT的埠

開啟tomcat 目錄 conf\server.xml  找到下面的配置


將埠8080,改為89

(1)修改CAS配置檔案

(1)修改CAS配置檔案

修改casWEB-INF/cas.properties

server.name=http://localhost:89

1.4.2去除https認證

CAS預設使用的是HTTPS協議,如果使用HTTPS協議需要SSL安全證書(需向特定的機構申請和購買) 。如果對安全要求不高或是在開發測試階段,可使用HTTP協議。我們這裡講解通過修改配置,讓CAS使用HTTP協議。

(1)修改casWEB-INF/deployerConfigContext.xml

找到下面的配置

<bean class="org.jasig.cas.authentication.handler.support.HttpBasedServiceCredentialsAuthenticationHandler"
p:httpClient-ref="httpClient"/>

這裡需要增加引數p:requireSecure="false"requireSecure屬性意思為是否需要安全驗證,即HTTPSfalse為不採用

(2)修改cas/WEB-INF/spring-configuration/ticketGrantingTicketCookieGenerator.xml

找到下面配置.

<bean id="ticketGrantingTicketCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"

      p:cookieSecure="true"

      p:cookieMaxAge="-1"

      p:cookieName="CASTGC"

      p:cookiePath="/cas" />

引數p:cookieSecure="true",同理為HTTPS驗證相關,TRUE為採用HTTPS驗證,FALSE為不採用https驗證。

引數p:cookieMaxAge="-1",是COOKIE的最大生命週期,-1為無生命週期,即只在當前開啟的視窗有效,關閉或重新開啟其它視窗,仍會要求驗證。可以根據需要修改為大於0的數字,比如3600等,意思是在3600秒內,開啟任意視窗,都不需要驗證。

我們這裡將cookieSecure改為false ,  cookieMaxAge 改為3600

3)修改casWEB-INF/spring-configuration/warnCookieGenerator.xml

找到下面配置

<bean id="warnCookieGenerator" class="org.jasig.cas.web.support.CookieRetrievingCookieGenerator"
p:cookieSecure="true"
p:cookieMaxAge="-1"
p:cookieName="CASPRIVACY"
p:cookiePath="/cas" />

我們這裡將cookieSecure改為false ,  cookieMaxAge 改為3600

值得注意的是:

配置完http方式訪問之後頁面上的 提示還是存在的,如果我們之後會對登入介面樣式完全改版,所以可以不用管它。如果還是需要把它去掉的話,cas統一認證的登陸頁面位於:cas目錄/WEB-INF/view/jsp/default 資料夾裡,其中ui/casLoginView.jsp為登陸頁面。我們找到這段程式碼刪掉即可。

<c:if test="${not pageContext.request.secure}">

  <div id="msg" class="errors">

    <h2>Non-secure Connection</h2>

    <p>You are currently accessing CAS over a non-secure connection.  Single Sign On WILL  NOT WORK.  In order to have single sign on work, you MUST log in over HTTPS.</p>

  </div>

 

</c:if>