訪問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...