CAS客户端认证流程

##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片段 <!-- lang: xml --> <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> cas:authenticationSuccess cas:userAAAA</cas:user> </cas:authenticationSuccess> </cas:serviceResponse>

其中AAAA是登陆的用户名 否则返回: <!-- lang:xml --> <cas:serviceResponse xmlns:cas='http://www.yale.edu/tp/cas'> <cas:authenticationFailure code='XXX'> YYY </cas:authenticationFailure> </cas:serviceResponse>

其中:

  • XXX的可能取值是INVALID_TICKET, CREATION_ERROR, INVALID_SERVICE
  • YYY是错误描述信息

至此CAS的登陆流程结束

登陆成功后,CAS客户端应该在会话中保存登陆状态信息。CAS服务器通常在Step 6会建立ticket和${client-service-url}的映射关系,以便在登出时通知其业务系统清除缓存中的状态信息

##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

请求正文: <!-- lang: xml --> logoutRequest=<samlp:LogoutRequest xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="#LR_TICKET_ID#" Version="2.0" IssueInstant="#CURRENT_DATETIME#"> <saml:NameID xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">@NOT_USED@</saml:NameID> samlp:SessionIndex#ST#</samlp:SessionIndex> </samlp:LogoutRequest>

*其中

  • LR_TICKET_ID:  CAS服务器为每个登出通知请求所生成的一个值
  • ST        之前登陆成功后CAS服务端传回来的Service Ticket
  • CURRENT_DATETIME 发出该请求时,CAS服务器的日期/时间

转载于:https://my.oschina.net/aiguozhe/blog/160715

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值