1. 程式人生 > >cas單點登入原理

cas單點登入原理

 

一、所需軟體

Jdk:jdk1.6.0_13

Apache:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2

Tomcat:apache-tomcat-6.0.10

memcache:memcached-1.2.1-win32(需要memcache叢集環境)

二、安全證書生成

1、keytool

Apache、tomcat、jdk需要使用安全證書,進windows command視窗生成證書,命令如下:

--生成證書庫

keytool -genkey -alias 800jit -keyalg RSA -keystore d:/cert/800jitkey

--從證書庫中到處證書

keytool -export -file d:/cert/800jit.crt -alias 800jit -keystore d:/cert/800jitkey

--把證書匯入jdk的證書庫

keytool -import -keystore d: /jdk1.6.0_13/jre/lib/security/cacerts -file d:/cert/800jit.crt -alias 800jit

--生成Apache伺服器的SSL連線需要配置私鑰檔案和證書檔案

D:casexjks2pfx>JKS2PFX.bat .keystore 800jitkey tomcat server_dev00

生成的server_dev00.crt,server_dev00.key放到D:/work/Apache2.2/conf/

2、openssl

openssl req -config ..confopenssl.cnf -new -out olymtech.csr

openssl rsa -in privkey.pem -out olymtech.key

openssl x509 -in olymtech.csr -out olymtech.cert -req -signkey olymtech.key -days 3650

openssl x509 -in olymtech.cert -out olymtech.der.crt -outform DER

keytool -import -keystore d:/work/jdk1.6.0_13/jre/lib/security/cacerts -file d:/casex/ssl/olymtech.crt -alias olymtech

keytool -import -keystore D:/casex/800jitkey -file D:/casex/cas-doc/ssl/olymtech.crt -alias olymtech

三、Apache配置

Apache+ssl+虛擬機器

--修改http.conf檔案

取消註釋 LoadModule ssl_module modules/mod_ssl.so

取消註釋 Include conf/extra/httpd-ssl.conf

取消註釋 Include conf/extra/httpd-vhosts.conf

ProxyPass /cas  balancer://cas lbmethod=bytraffic stickysession=jsessionid

<proxy balancer://cas/>

    BalancerMember ajp://192.168.1.190:10009/cas  loadfactor=1 route=jvm1

    BalancerMember ajp://192.168.1.190:8009/cas  loadfactor=1 route=jvm2

</proxy>

--修改httpd-ssl.conf

在<VirtualHost _default_:443>下增加

ProxyPass /cas  balancer://cas/ lbmethod=bytraffic stickysession=jsessionid

ProxyPassReverse /cas balancer://cas/

SSLProxyEngine On

修改

SSLCertificateFile"D:/work/Apache2.2/conf/server_dev00.crt"

SSLCertificateKeyFile"D:/work/Apache2.2/conf/server_dev00.key"

--修改httpd-vhosts.conf

在<VirtualHost *:80>下增加

ProxyPass /cas  balancer://cas/ lbmethod=bytraffic stickysession=jsessionid

ProxyPassReverse /cas balancer://cas/

四、Tomcat配置

修改server.xml

--配置ssl

<Connector port="8443"protocol="HTTP/1.1"SSLEnabled="true"

               maxThreads="150"scheme="https"secure="true"

               clientAuth="false"sslProtocol="TLS"

                        keystoreFile="d:/work/apache-tomcat-6.0.10/conf/800jitkey"

                        keystorePass="111111"/>

五、session共享(Tomcat)

六、memcache叢集

CAS SERVER篇

一、CAS 原理介紹

 

訪問流程圖

主要原理:使用者第一次訪問一個CAS 服務的客戶web 應用時(訪問URL :http://192.168.1.90:8081/web1 ),部署在客戶web 應用的cas AuthenticationFilter ,會截獲此請求,生成service 引數,然後redirect 到CAS 服務的login 介面,url為https://cas:8443/cas/login?service=http%3A%2F%2F192.168.1.90%3A8081%2Fweb1%2F ,認證成功後,CAS 伺服器會生成認證cookie ,寫入瀏覽器,同時將cookie 快取到伺服器本地,CAS 伺服器還會根據service 引數生成ticket,ticket 會儲存到伺服器,也會加在url 後面,然後將請求redirect 回客戶web 應用,url 為http://192.168.1.90:8081/web1/?ticket=ST-5-Sx6eyvj7cPPCfn0pMZuMwnbMvxpCBcNAIi6-20 。這時客戶端的AuthenticationFilter 看到ticket 引數後,會跳過,由其後面的TicketValidationFilter 處理,TicketValidationFilter 會利用httpclient 工具訪問cas 服務的/serviceValidate 介面, 將ticket 、service 都傳到此介面,由此介面驗證ticket 的有效性,TicketValidationFilter 如果得到驗證成功的訊息,就會把使用者資訊寫入web 應用的session裡。至此為止,SSO 會話就建立起來了,以後使用者在同一瀏覽器裡訪問此web 應用時,AuthenticationFilter 會在session 裡讀取到使用者資訊,所以就不會去CAS 認證,如果在此瀏覽器裡訪問別的web 應用時,AuthenticationFilter 在session 裡讀取不到使用者資訊,會去CAS 的login 介面認證,但這時CAS 會讀取到瀏覽器傳來的cookie ,所以CAS 不會要求使用者去登入頁面登入,只是會根據service 引數生成一個ticket ,然後再和web 應用做一個驗證ticket 的互動。

二、CAS 服務端的處理邏輯

CAS 服務端總共對外定義了9 個介面,客戶端通過訪問這9 個介面與服務端互動,這9個介面為:

介面

說明

備註

/login

認證介面

/logout

退出介面,負責銷燬認證cookie

/validate

驗證ticket 用的介面,CAS1.0 定義

/serviceValidate

驗證ticket 用的介面,CAS2.0 定義,返回xml 格式的資料

/proxy

支援代理認證功能的介面

/proxyValidate

支援代理認證功能的介面

/CentralAuthenticationService

用於和遠端的web services 互動

/remoteLogin(新增)

認證介面

/directLogin(新增)

認證介面

詳細說明:

 /login:

登入流程這部分要考慮到不同種類使用者憑證的獲取方案,以及客戶應用傳來的service 、gateway 、renew 引數的不同取值組合,CAS 為了實現流程的高度可配置性,採用了Spring Web Flow 技術。通過CAS 釋出包裡的login-webflow.xml 、cas-servlet.xml 、applicationContext.xml 這3 個檔案,找出 了登入有關的所有元件,畫出處理流程圖。

 

CAS 預設的登入處理流程

 

第一次訪問Web 應用的流程走向

 

已經登入web1 後,訪問web1 的資源(web1 沒有啟動session ),或訪問web2 的資源

注:

1 : InitialFlowSetupAction: 是流程的入口。用 request.getContextPath() 的值來設定 cookie 的 Path 值, Cookie 的 path 值是在配置檔案裡定義的,但這個 Action 負責將 request.getContextPath() 的值設定為 Cookie 的 path 值,這是在 cas 部署環境改變的情況下,靈活地設定 cookie path 的方式;把 cookie 的值以及 service 引數的值放入 requestContext 的 flowscope 裡。

2 : GenerateServiceTicketAction 此 Action 負責根據 service 、 GTC cookie 值生成 ServiceTicket 物件, ServiceTicket 的 ID 就是返回給客戶應用的 ticket 引數,如果成功建立 ServiceTicket ,則轉發到 WarnAction ,如果建立失敗,且 gateway 引數為 true ,則直接redirect 到客戶應用, 否則則需要重新認證。

3 : viewLoginForm 這是登入頁面, CAS 在此收集使用者憑證。 CAS 提供的預設實現是 /WEB-INF/view/jsp/simple/ui/casLoginView.jsp 。

4 : bindAndValidate 對應 AuthenticationViaFormAction 的 doBind 方法,該方法負責蒐集登入頁面上使用者錄入的憑證資訊(使用者名稱、密碼等),然後把這些資訊封裝到 CAS 內部的 Credentials 物件中。使用者在 casLoginView.jsp 頁面上點選提交後,會觸發此方法。

5:submit   對應 AuthenticationViaFormAction 的 submit 方法 , 如果 doBind 方法成功執行完, 則觸發 submit 方法,此方法負責呼叫centralAuthenticationService 的      grantServiceTicket 方法,完成認證工作,如果認證成功,則生成 TicketGrantingTicket 物件,放在快取裡, TicketGrantingTicket 的 ID 就是 TGC Cookie 的 value 值。

6 : warn  CAS 提供了一個功能:使用者在一個 web 應用中跳到另一個 web 應用時, CAS 可以跳轉到一個提示頁面,該頁面提示使用者要離開一個應用進入另一個應用,可以讓使用者自己選擇。使用者在登入頁面 viewLoginForm 上選中了 id=”warn” 的複選框,才能開啟這個功能。

WarnAction 就檢查使用者有沒有開啟這個功能,如果開啟了,則轉發到showWarnView, 如果沒開啟,則直接redirect 到客戶應用。

7 :SendTicketGrantingTicketAction 此Action 負責為response 生成TGC Cookie ,cookie 的值就是 AuthenticationViaFormAction 的submit 方法生成的 TicketGrantingTicket 物件的 ID 。

8 : viewGenerateLoginSuccess 這是 CAS 的認證成功頁面。

/logout: ( 對應實現類 org.jasig.cas.web.LogoutController )

處理邏輯:   

        1) removeCookie

       2) 在服務端刪除TicketGrantingTicket 物件(此物件封裝了cookie 的value 值)

       3 )redirect 到退出頁面,有2 種選擇:

          if(LogoutController 的followServiceRedirects 屬性為true 值,且url 裡的service 引數非空){

                redirect 到 sevice 引數標識的url

             }

          else{

             redirect 到內建的casLogoutView (cas/WEB-INF/view/jsp/default/ui/casLogoutView.jsp ),如果url 裡有url 引數,則此url 引數標識的連結會顯示在casLogoutView 頁面上。

           }

/serviceValidate: (對應實現類 org.jasig.cas.web.ServiceValidateController )

 處理邏輯:  

  如果service 引數為空或ticket 引數為空,則轉發到failureView (/WEB-INF/view/jsp/default/protocol/2.0/casServiceValidationFailure.jsp )

    驗證ticket 。以ticket 為引數,去快取裡找ServiceTicketImpl 物件,如果能找到,且沒有過期,且ServiceTicketImpl 物件對應的service 屬性和service 引數對應,則驗證通過,驗證通過後,請求轉發至casServiceSuccessView (cas/WEB-INF/view/jsp/default/protocol/2.0/casServiceValidationSuccess.jsp ),驗證不通過,則轉發到failureView 。

三、認證相關的概念及流程

概念

  • Credentials使用者提供的用於登入用的憑據資訊,如使用者名稱/ 密碼、證書、IP 地址、Cookie 值等。比如 UsernamePasswordCredentials ,封裝的是使用者名稱和密碼。CAS 進行認證的第一步,就是把從UI 或request 物件裡取到的使用者憑據封裝成Credentials 物件,然後交給認證管理器去認證。
  • AuthenticationHandler認證Handler, 每種AuthenticationHandler 只能處理一種Credentials ,如AbstractUsernamePasswordAuthenticationHandler 只負責處理 U sernamePasswordCredentials 。
  • Principal 封裝使用者標識,比如 SimplePrincipal, 只是封裝了使用者名稱。認證成功後, credentialsToPrincipalResolvers 負責由Credentials 生成 Principal 物件。
  • CredentialsToPrincipalResolvers負責由 Credentials 生成 Principal 物件,每種 CredentialsToPrincipalResolvers 只處理 一種Credentials ,比如 UsernamePasswordCredentialsToPrincipalResolver 負責從 U sernamePasswordCredentials 中取出使用者名稱,然後將其賦給生成的 SimplePrincipal 的 ID 屬性。
  • AuthenticationMetaDataPopulators 負責將 Credentials 的一些屬性賦值給 Authentication 的 attributes 屬性。
  • Authentication   Authentication是認證管理器的最終處理結果, Authentication 封裝了 Principal ,認證時間,及其他一些屬性(可能來自 Credentials )。
  • AuthenticationManager 認證管理器得到 Credentials 物件後,負責排程AuthenticationHandler 去完成認證工作,最後返回的結果是 Authentication 物件。
  • CentralAuthenticationService CAS 的服務類,對 Web 層提供了一些方法。該類還負責呼叫 AuthenticationManager 完成認證邏輯

序列圖

 

類圖

 

CAS的核心就是其Ticket,及其在Ticket之上的一系列處理操作。CAS的主要票據有TGT、ST、PGT、PGTIOU、PT,其中TGT、ST是CAS1.0協議中就有的票據,PGT、PGTIOU、PT是CAS2.0協議中有的票據。

一 名詞解釋

  • TGT(Ticket Grangting Ticket)

TGT是CAS為使用者簽發的登入票據,擁有了TGT,使用者就可以證明自己在CAS成功登入過。TGT封裝了Cookie值以及此Cookie值對應的使用者資訊。使用者在CAS認證成功後,CAS生成cookie,寫入瀏覽器,同時生成一個TGT物件,放入自己的快取,TGT物件的ID就是cookie的值。當HTTP再次請求到來時,如果傳過來的有CAS生成的cookie,則CAS以此cookie值為key查詢快取中有無TGT ,如果有的話,則說明使用者之前登入過,如果沒有,則使用者需要重新登入。

  • ST(Service Ticket)

ST是CAS為使用者簽發的訪問某一service的票據。使用者訪問service時,service發現使用者沒有ST,則要求使用者去CAS獲取ST。使用者向CAS發出獲取ST的請求,如果使用者的請求中包含cookie,則CAS會以此cookie值為key查詢快取中有無TGT,如果存在TGT,則用此TGT簽發一個ST,返回給使用者。使用者憑藉ST去訪問service,service拿ST去CAS驗證,驗證通過後,允許使用者訪問資源。

  • PGT(Proxy Granting Ticket)

Proxy Service的代理憑據。使用者通過CAS成功登入某一Proxy Service後,CAS生成一個PGT物件,快取在CAS本地,同時將PGT的值(一個UUID字串)回傳給Proxy Service,並儲存在Proxy Service裡。Proxy Service拿到PGT後,就可以為Target Service(back-end service)做代理,為其申請PT。

  • PGTIOU(Proxy Granting Ticket IOU)

PGTIOU是CAS協議中定義的一種附加票據,它增強了傳輸、獲取PGT的安全性。 PGT的傳輸與獲取的過程:Proxy Service呼叫CAS的serviceValidate介面驗證ST成功後,CAS首先會訪問pgtUrl指向的https url,將生成的 PGT及PGTIOU傳輸給proxy service,proxy service會以PGTIOU為key,PGT為value,將其儲存在Map中;然後CAS會生成驗證ST成功的xml訊息,返回給Proxy Service,xml訊息中含有PGTIOU,proxy service收到Xml訊息後,會從中解析出PGTIOU的值,然後以其為key,在map中找出PGT的值,賦值給代表使用者資訊的Assertion物件的pgtId,同時在map中將其刪除。

  • PT(Proxy Ticket)

PT是使用者訪問Target Service(back-end service)的票據。如果使用者訪問的是一個Web應用,則Web應用會要求瀏覽器提供ST,瀏覽器就會用cookie去CAS獲取一個ST,然後就可以訪問這個Web應用了。如果使用者訪問的不是一個Web應用,而是一個C/S結構的應用,因為C/S結構的應用得不到cookie,所以使用者不能自己去CAS獲取ST,而是通過訪問proxy service的介面,憑藉proxy service的PGT去獲取一個PT,然後才能訪問到此應用。

二 程式碼解析

 

CAS Ticket類圖

  • TicketGrantingTicket 的 grantServiceTicket方法

方法宣告:public synchronized ServiceTicket grantServiceTicket(final String id,final Service service, final ExpirationPolicy expirationPolicy, final boolean credentialsProvided)

方法描述:

 1:生成SerivceTicketImpl

 2:更新屬性:

this.previousLastTimeUsed = this.lastTimeUsed;

   this.lastTimeUsed = System.currentTimeMillis();

   this.countOfUses++;

 3:給service物件的principal屬性賦值

 4:將service物件放入map services

  • ServiceTicket 的 grantTicketGrantingTicket方法

方法宣告:

public TicketGrantingTicket grantTicketGrantingTicket(final String id, final Authentication authentication,final ExpirationPolicy expirationPolicy)

方法描述:在CAS3.3對CAS2.0協議的實現中,PGT是由ST簽發的,呼叫的就是ServiceTicket的grantTicketGrantingTicket方法。方法返回的TicketGrantingTicket物件,表徵的是一個PGT物件,其中的ticketGrantingTicket屬性的值是簽發ST的TGT物件。

  • TicketGrantingTicket 的 expire方法

方法宣告:void expire()

方法描述:

在CAS的logout介面實現中,要呼叫TGT物件的expire方法,然後會在快取中清除此TGT物件。

expire方法的內容:迴圈遍歷 services 中的Service物件,呼叫其logoutOfService方法。具體Service實現類中的logoutOfService方法的實現,要通知具體的應用,客戶要退出。

三、TGT、ST、PGT、PT關係

1:ST是TGT簽發的。使用者在CAS上認證成功後,CAS生成TGT,用TGT簽發一個ST,ST的ticketGrantingTicket屬性值是TGT物件,然後把ST的值redirect到客戶應用。

2:PGT是ST簽發的。使用者憑藉ST去訪問Proxy service,Proxy service去CAS驗證ST(同時傳遞PgtUrl引數給CAS),如果ST驗證成功,則CAS用ST簽發一個PGT,PGT物件裡的ticketGrantingTicket是簽發ST的TGT物件。

3:PT是PGT簽發的。Proxy service代理back-end service去CAS獲取PT的時候,CAS根據傳來的pgt引數,獲取到PGT物件,然後呼叫其grantServiceTicket方法,生成一個PT物件。

 

TGT、ST、PGT、PT之間的關聯關係

CAS CLIENT篇

CASFilter 引數說明:

引數

是否必須

說明

com.olymtech.cas.client.filter.loginUrl

指定 CAS 提供登入頁面的 URL

com.olymtech.cas.client.filter.validateUrl

指定 CAS 提供 service ticket 或 proxy ticket 驗證服務的 URL

com.olymtech.cas.client.filter.serverName

指定客戶端的域名和埠,是指客戶端應用所在機器而不是 CAS Server 所在機器,該引數或 serviceUrl 至少有一個必須指定

com.olymtech.cas.client.filter.serviceUrl

該引數指定過後將覆蓋 serverName 引數,成為登入成功過後重定向的目的地址

com.olymtech.cas.client.filter.wrapRequest

如果指定為 true,那麼 CASFilter 將重新包裝 HttpRequest,並且使 getRemoteUser() 方法返回當前登入使用者的使用者名稱

com.olymtech.cas.client.filter.noFilter

設定不過濾的路徑,語法如下:/name1/,/name2,

com.olymtech.cas.client.filter.proxyCallbackUrl

用於當前應用需要作為其他服務的代理(proxy)時獲取 Proxy Granting Ticket 的地址

com.olymtech.cas.client.filter.authorizedProxy

用於允許當前應用從代理處獲取 proxy tickets,該引數接受以空格分隔開的多個 proxy URLs,但實際使用只需要一個成功即可。當指定該引數過後,需要修改 validateUrl 到 proxyValidate,而不再是 serviceValidate

com.olymtech.cas.client.filter.renew

如果指定為 true,那麼受保護的資源每次被訪問時均要求使用者重新進行驗證,而不管之前是否已經通過

com.olymtech.cas.client.filter.gateway

指定 gateway 屬性

應用整合篇

一、JAVA程式整合

1、應用配置說明(結合cas client

匯入key到本地jdk(tomcat使用的jdk必須)

keytool -import -keystore d:/work/jdk1.6.0_13/jre/lib/security/cacerts -file d:/casex/800jit.crt -alias 800jit

在ie中匯入證書800jit.crt

修改web程式的web.xml新增

    <!-- 用於單點退出 -->

    <listener>

        <listener-class>org.jasig.cas.client.session.SingleSignOutHttpSessionListener</listener-class>

    </listener>

    <filter>

    <filter-name>CAS Single Sign Out Filter</filter-name>

    <filter-class>org.jasig.cas.client.session.SingleSignOutFilter</filter-class>

    </filter>

    <!-- 用於單點登入 -->

    <filter>

       <filter-name>CAS Filter</filter-name>

       <filter-class>com.olymtech.cas.client.filter.CASFilter</filter-class>

       <init-param>

           <param-name>com.olymtech.cas.client.filter.loginUrl</param-name>

           <param-value>https://cas.server.com/cas/login</param-value>

       </init-param>

       <init-param>

           <param-name>com.olymtech.cas.client.filter.validateUrl</param-name>

           <param-value>https://cas.server.com/cas/serviceValidate</param-value>

       </init-param>

       <init-param>

           <param-name>com.olymtech.cas.client.filter.serverName</param-name>

           <param-value>saas.server.com</param-value>

       </init-param>

       <init-param>

           <param-name>com.olymtech.cas.client.filter.wrapRequest</param-name>

           <param-value>true</param-value>

       </init-param>

    </filter>

    <filter-mapping>

       <filter-name>CAS Single Sign Out Filter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

    <filter-mapping>

       <filter-name>CAS Filter</filter-name>

       <url-pattern>/*</url-pattern>

    </filter-mapping>

在jsp/servlet中得到登陸資料:

<%@ page language="java"import="com.olymtech.cas.client.filter.CASFilterRequestWrapper"%>

<%

CASFilterRequestWrapper  reqWrapper=newCASFilterRequestWrapper(request);

String username = reqWrapper.getRemoteUser();

%>

相關推薦

CAS登入原理簡單介紹

1. SSO簡介 1.1 單點登入定義 單點登入(Single sign on),英文名稱縮寫SSO,SSO的意思就是在多系統的環境中,登入單方系統,就可以在不用再次登入的情況下訪問相關受信任的系統。也就是說只要登入一次單體系統就可以。計劃在專案中加入單點登入,

cas登入原理簡單介紹(1)

SSO簡介 1.1 單點登入定義 單點登入(Single sign on),英文名稱縮寫SSO,SSO的意思就是在多系統的環境中,登入單方系統,就可以在不用再次登入的情況下訪問相關受信任的系統。也就是說只要登入一次單體系統就可以。計劃在專案中加入單點登入,開發

CAS登入原理分析

一,業務分析 在分散式系統架構中,假設把上述的三個子系統部署在三個不同的伺服器上。前提是使用者登入之後才能訪問這些子系統。那麼使用傳統方式,可能會存在這樣的問題: 1.當訪問使用者中心,需要使用者登入帳號 2.當訪問購物車,還需要使用者登入帳號 3.當訪問商品

CAS登入原理解析

1、基於Cookie的單點登入的回顧        基於Cookie的單點登入核心原理:       將使用者名稱密碼加密之後存於Cookie中,之後訪問網站時在過濾器(filter)中校驗使用者許可權,如果沒有許可權

cas登入原理

  一、所需軟體 Jdk:jdk1.6.0_13 Apache:httpd-2.2.15-win32-x86-openssl-0.9.8m-r2 Tomcat:apache-tomcat-6.0.10 memcache:memcached-1.2.1-win32(需要memcache叢集環境) 二

一張圖看明白CAS登入原理

最近工作上用到了CAS,研究了下,折騰的心累.關於CAS單點登入的原理或者說認證流程,網上查到的資料上大部分都扯得不是很清晰,看的雲裡霧裡.所以就花了些時間專門去整理了下畫了這張時序圖,用的是一個線上的工具,對UML的支援不怎麼完善,因此畫出來的就顯得不是很專業

CAS實現SSO登入原理

1.      CAS簡介 CAS(Central Authentication Service) 是 Yale大學發起的一個企業級的、開源的專案,旨在為 Web 應用系統提供一種可靠的單點登入解決方法(屬於Web SSO)。 CAS開始於2001年, 並在 2004年

cas系列(一)--cas登入基本原理

(這段時間打算做單點登入,因此研究了一些cas資料並作為一個系列記錄下來,一來可能會幫助一些人,二來對我自己所學知識也是一個鞏固。) 一、為什麼要實現單點登入 隨著資訊化不斷髮展,企業的資訊化過程是一個循序漸進的過程,在企業各個業務網站逐步建設的過程中,根據各種業務資訊水

CAS框架登入原理解析

單點登入:Single Sign On,簡稱SSO,SSO使得在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。 CAS框架:CAS(Central Authentication Service)是實現SSO單點登入的框架。 CSA

CAS登入登出原理

CAS單點登入原理 利用之前的角色及上面的用例,互動可以表示為如下步驟 1.使用者訪問application1,application1檢視session中是否有使用者登入的資訊(使用session的情況下),如果沒有,轉向到Server要求使用者認證身份,此時將會把此

NC整合CAS統一認證+登入原理

原理及步驟: 進入NC伺服器攔截器1處理:如果URI是/index.jsp且ticket==null,且Assertion==null,則跳轉到CAS認證頁面。 2、CAS登入成功,跳轉回業務系統/index.jsp頁面。 進入NC伺服器攔截器1處理:此時ticket!

CAS統一登入認證(16): openedx 通過oauth2.0接入cas登入

openedx 是流行的開源mooc(慕課)平臺,我這安裝的是edx-ginkgo.2-7版本,cas是5.3.2 這個接入頗費了一番周折,總是設定不成功,因為沒有可以直接參考的案例,只有edx的官方站點有些說明,但都是針對google,facebook,github等賬號的第三方oauth2.

CAS登入-介紹(一)

CAS單點登入-介紹(一) 由於之前工作需要都是對接現成的單點登陸服務,基於自己興趣目前正在研究CAS單點登陸原理和搭建以及不同的應用場景對接方式。特此來記錄學習的過程以及分享,希望能幫助大家。 1.CAS是什麼? CAS是Central Authenticat

cas 登入(一)

對接單點登入不是這個端退出不了,就是使用者賬號實現多模組切換,甚是煩惱   1、cas服務端:下載地址:http://downloads.jasig.org/cas/,cas的服務端和客戶端有許多版本,最新版本和老版本 有很大的區別,目前服務端最新版本為:cas-server-

登入原理與簡單實現學習

一、單系統登入機制 1、http無狀態協議   web應用採用browser/server架構,http作為通訊協議。http是無狀態協議,瀏覽器的每一次請求,伺服器會獨立處理,不與之前或之後的請求產生關聯,這個過程用下圖說明,三次請求/響應對之間沒有任何聯絡   但這也同時意味著

spring boot + mybatis + shiro + cas 登入

該專案是在shiro(三)的基礎上進行修改的,建議首先將shiro的部分了解一下。 CAS的知識點: 單點登入:簡稱SSO,SSO使得在多個應用系統中,使用者只需要登入一次就可以訪問所有互相信任的應用系統 CAS框架:CAS是實現單點登入的框架。 結構:cas分為兩個部分,CAS S

CAS登入-簡介

介紹 CAS CAS是一個單點登入框架, 是 Yale 大學發起的一個開源專案,旨在為 Web 應用系統提供一種可靠的單點登入方法,CAS 在 2004 年 12 月正式成為 JA-SIG 的一個專案。程式碼目前在github上管理 SSO 單點登入,英文全稱:Single Sign On(SSO)

cas登入遇到 supplied credentials: [admin+password] 問題原因以及解決辦法

最近在寫shiro-cas單點登入demo的時候,真的是問題多多,百度了半天也沒有什麼有用的資訊,服務端部署了一遍又一遍,真的sui(抱怨over..哈哈) 我遇到的問題是服務端配置資料庫連線的時候出現的問題,先回顧一下流程 一、修改deployerConfigContext.xm

cas登入 (二) 客戶端與springboot整合

在springboot專案中實現cas單點登入統一認證,只需要在專案中配置 cas過濾器即可使用. 1. springboot專案pom.xml中 新增web支援依賴 、cas客戶端依賴包 <dependency> <groupId>org

SSO CAS登入搭建詳細步驟及原始碼

1.因為是本地模擬sso環境,而sso的環境測試需要域名,所以需要虛擬幾個域名出來,步驟如下: 2.進入目錄C:\Windows\System32\drivers\etc 3.修改hosts檔案 127.0.0.1  jeesz.cn 127.0.0.1  sso1.