cas 认证流程以及原理

单点登录原理:

第一次登录
某用户访问a系统的资源,会被cas客户端拦截,cas检测到没有JSESSIONID,于是转发到cas服务器,cas服务器检测到请求中没有携带TGT信息,于是返回登录页面(并返回一次性回话id),用户输入完后点登录,再次请求到cas服务器,服务器验证用户通过后,返回一个service和ticket(其实就是链接地址,由service和ticket拼接,service就是最开始请求的地址),并把把TGT设置到cookie中,然后跳转到cas客户端,cas客户端携带ticket再次去服务器交互获取认证(判断ticket是否有效),认证通过后,cas客户端生成JSESSIONID,把JSESSIONID拼接在用户请求的地址后面,以分号隔开,去处理用户的资源。后面该用户访问该系统下的所有资源均使用JSESSIONID即可获取资源。

登录成功后

用户访问b系统

初次请求b系统,被cas拦截器拦截,发现没有JSESSIONID,于是转发请求到cas服务器,cas服务器检测到请求中包含TGT,于是通过认证(相当于免输入密码这一环节),返回用户一个新的ticket,并再次设置一次TGT(值没变),跳转到cas客户端,cas客户端携带ticket去和cas服务器交互获取认证,认证通过后,cas生成一个新的JSESSIONID,然后处理请求,后续所有请求用这个JSESSIONID与b系统交互。

就相当于某人要去仓库拿东西,被看守挡住,说有我颁发的证才能进去,否则不能。没有,于是说先到主管那登记,见到主管后,主管说需要登记身份信息,登记成功后,给他一张票据和一个通行证,于是他拿着票据再次请求资源,遇到看门的,就把票据给它,看门人把票据跟主管认证,主管说这个票据确实是我发给他的,让他通过吧,于是看门人就同意他去仓库取东西,并自己给它颁发一个证,方便以后再次来仓库拿东西。

过了一段时间,那个人再去仓库拿东西,看门人问他要证,但是他发现把证丢了,于是,又让他再次去主管那通过认证,到主管那后,发现他有通行证,已经被登记过,于是不用重新登记,直接重新给他一个票据,于是又带着这个票据去获取资源,交给看门人,看门人又拿着这个票据去和主管认证,看是不是主管发的,确实是主管开的,于是自己又颁发一个证给他,方便以后再次来仓库拿东西。

这就是整个流程。

http://11.11.11.172:8888/cas/login;jsessionid=044FD563F92F3D1EFB5C7DEFBD94404D?service=http%3A%2F%2F192.168.0.36%3A8080%2FtestWar1%2Ftest%21init(输入界面)

用户名和秘密
                  GTC                                                  set cookie

—>http://11.11.11.172:8888/cas/login —>http://192.168.0.36:8080/testWar1/test!init?ticket=ST-155135-RosFskasfIvpnBMUvYUS-cas27.example.org—>http://192.168.0.36:8080/testWar1/test!init;jsessionid=CE56271A51D37B6694F9EBC6B5B6FEAA

更好的文章:https://blog.csdn.net/javaloveiphone/article/details/52439613

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值