原理及步驟:
1、瀏覽器中輸入應用位址
進入nc
伺服器***
1處理:如果
uri是
/index.jsp
且ticket==null
,且assertion==null
,則跳轉到
cas認證頁面。 2
、cas
登入成功,跳轉回業務系統
/index.jsp
頁面。
進入nc
伺服器***
1處理:此時
ticket!=null
,流轉到***2進行
ticket
校驗。
3、***
2校驗未通過則終止;通過則設定
assertion
(包含使用者名稱等資訊),並跳轉到
/index.jsp;jsessionid=xx
。注意此時的
uri是
/index.jsp;jsessionid=xx
,而不是
/inedx.jsp。
4、***
1進行處理,此時
ticket==null
但assertion!=null
,進行ssokey
註冊和跳轉到單點登入位址,
cas單點登入成功。
流程圖:
web.xml配置
/* ***1核心**:
// 3. 校驗器處理通過後重定向到系統,/index.jsp;jsessionid或者/;jsessionid
else if(uri!=null&&(uri.startswith("/index.jsp;jsessionid")||uri.startswith("/;jsessionid")))
return isinwhitelist;
} @override
public final void dofilter(servletrequest servletrequest, servletresponse servletresponse, filterchain filterchain)
throws ioexception, servletexception
string ticket = commonutils.safegetparameter(request, getartifactparametername());
// 只有從認證頁面跳回系統那一次請求有ticket
if(commonutils.isnotblank(ticket))
// 存在session則返回,否則返回null
// 1.生成ssokey
string randomkey = idmaker.makeid(30);
// 拼接ncurl跳轉url ssoregservlet?ssokey=key&usercode=
// 2.註冊ssokey
try catch (exception e)
// 3.通過ssokey登入
response.sendredirect(newurl);
return;
}filterchain.dofilter(request, response);
return;
}else
}} catch (exception e1)
log.error("######sendredirect to cas, uri="+request.getrequesturi());
logger.debug("no ticket and no assertion found");
string serviceurl = constructserviceurl(request, response);
string modifiedserviceurl;
if(gateway)
else
string urltoredirectto = commonutils.constructredirecturl(casserverloginurl, getserviceparametername(), modifiedserviceurl, renew, gateway);
// 重定向
response.sendredirect(urltoredirectto);
return;}}
CAS統一登入認證 3 幾個配置細節
1.ssl證書配置 前面測試用的是自簽證證書,chrome58以後版本不能認可,如果要實用,需要申請幾大認證機構的認證證書 我申請了comodo的免費試用證書,當天就收到簽發的證書檔案包 使用配置方法 cd usr local apache tomcat 8.5.32 mkdir cert 把上面三...
CAS單點登入 簡介(一)
我們這次實戰用的版本為cas 5.1.3 cas是乙個單點登入框架,開始是由耶魯大學的乙個組織開發,後來歸到apereo去管。同時cas也是開源,遵循著apache 2.0協議,目前是在github上管理。單點登入 single sign on,簡稱sso,sso使得在多個應用系統中,使用者只需要登...
統一認證授權及單點登入的技術選擇
ltpatoken 全稱 ibm lightweight third party authentication。是乙個羽量的token生成規則,作用有點像oauth2.0的第四種規則client credentials,即直接產生access token 乙個非常靈活的認證規則,輕量級使用者單點登入...