CAS登入流程

2021-10-21 02:02:54 字數 2870 閱讀 7804

訪問http://localhost/analysis

請求會被ngixn如下配置攔截

location /analysis/
最後會定位到/analysis/index.html接著會請求一系列靜態資源,也走nginx的該配置

其中的乙個js會首先發起非同步呼叫

這個時候,會被nginx的如下配置攔截

location /data-web/
請求會被ngixn**到後端,會被後端的認證***攔截

filterchaindefinitionmap.

put(

"/**"

,"formauthenticationrewritefilter"

);

該過濾器父類中有如下方法

//accesscontrolfilter

public

boolean

onprehandle

throws exception

//檢視當前使用者是否是已登入狀態

protected

boolean

isaccessallowed

//不是登入狀態則執行下面的方法

onaccessdenied

()

//訪問的不是登入的url的情況下,重定向到對應的登入url

redirecttologin

(servletrequest request, servletresponse response)

我們重寫了redirecttologin()方法,裡面會判斷來自哪個平台,然後重定向到對應的平台

例如我們訪問的是user/detail請求頭攜帶的有form引數,就判斷出是analysis平台,然後這裡重定向到

輸入賬號密碼進行登入

後端ticket校驗

訪問http://localhost/data-web/shiro-cas/analysis?ticket=st-43-5kuhfd0qfmrn5eddk1nh-cas01.example.org即剛剛登入時攜帶的service引數,到後端進行ticket校驗

執行完dogetauthenticationinfo的authenticationinfo authc = validticket(token);

接下來是將使用者初始化session中:

//根據唯一標識插入或者獲取使用者

user sysuser = userservice.

initsessionuser

(account, from)

;//將使用者儲存到session中

token校驗成功後進行重定向

protected

void

issuesuccessredirect

(servletrequest request, servletresponse response, string from)

throws exception

然後進入entrycontroller,進行匹配

重定向後相當於再次訪問localhost/analysis/,再向後端發起請求通過jsessionid即可被驗證為登入狀態

CAS的詳細登入流程

上圖是3個登入場景,分別為 第一次訪問www.qiandu.com 第二次訪問 以及登入狀態下第一次訪問mail.qiandu.com。下面就詳細說明上圖中每個數字標號做了什麼,以及相關的請求內容,響應內容。標號1 使用者訪問經過他的第乙個過濾器 cas提供,在web.xml中配置 authenti...

CAS單點登入流程梳理

新的專案中,需要對接單點登入,於是了解了一下cas的登入流程。按照流程圖,前端需要在初次進頁面的時候,請求伺服器獲取鑑權。服務端發現這個使用者沒有相關憑證的時候,可以返回相應的狀態碼告知前端需要登入。前端跳轉到https cas login?service http 進行登入。登入完成之後,cas會...

CAS與單點登入的流程及原理

cas central authentication service sso single sign on center cas 認證中心 a 某應用服務 b 另乙個應用服務 ticket granted ticket tgt 全域性票 ticket granted cookie tgc 存放 tg...