CAS客戶端認證流程

jopen 11年前發布 | 102K 次閱讀 CAS OpenID/單點登錄SSO

CAS登陸流程

CAS客戶端認證流程

Step 1:瀏覽器向CAS客戶端發起登陸請求,CAS客戶端生成“登陸URL”,并把瀏覽器重定向到該 URL 登陸URL: https://${cas-server-host}:${cas-server-port}/cas-server/login?service=${client-service-url} 其中 cas-server-host: cas認證服務器的域名 cas-server-port: cas認證服務器的IP client-service-url: 用于登陸成功后,瀏覽器重定向的URL

Step 2: 瀏覽器向“登陸URL”發起重定向請求,CAS服務端創建會話,把TGT(Ticket Granting Ticket)放入cookie,并返回登陸頁面

Step 3:用戶輸入用戶名和密碼,然后提交登陸表單. CAS服務端通過登陸驗證后,會生成一個ST(service ticket,簡稱ticket), 然后把瀏覽器重定向到${client-service-url}?ticket=${service-ticket}

Step 4:瀏覽器重定向到${client-service-url}?ticket=${service-ticket}發起重定向請求

Step 5: CAS客戶端取出ticket,生成“ticket驗證URL”,然后向"ticket驗證URL"發起http GET請求 "ticket驗證URL":    http://${cas-server-host}:${cas-server-port}/cas-server /serviceValidate?ticket=${service-ticket}&service=${client-service-url}

Step 6: 如果CAS服務器通過ticket的有效性檢查,那么會返回類似如下格式的XML片段 AAAA

其中AAAA是登陸的用戶名 否則返回: YYY

其中:

  • XXX的可能取值是INVALIDTICKET, CREATIONERROR, INVALID_SERVICE
  • YYY是錯誤描述信息

至此CAS的登陸流程結束

注意事項 登陸成功后,CAS客戶端應該在會話中保存登陸狀態信息

CAS登出流程

瀏覽器或CAS客戶端向“登出URL”發起GET請求: "登出URL": https://${cas-server-host}:${cas-server-port}/cas-server/logout CAS服務器銷毀TGT和ST,并向所有已登陸的業務系統發出登出通知請求

請求方法:POST

請求URL: ${client-service-url}

請求頭: Content-Type:application/x-www-form-urlencoded

請求正文: logoutRequest=saml:NameIDxmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">@NOT_USED@#ST#/samlp:SessionIndex>

*其中#

  • #LRTICKETID#:        CAS服務器為每個登出通知請求所生成的一個值
  • #ST#                                之前登陸成功后CAS服務端傳回來的Service Ticket
  • #CURRENT_DATETIME# 發出該請求時,CAS服務器的日期/時間
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!