为什么要使用oath协议?

一.如何查看用户是否登录?

通过cookie和session来查看用户是否登录.

如果cookie对应的session中保存了用户登录信息,则判定用户已登录

Jsessionid,也就是tomcat自动生成的cookie,用来匹配session,默认的domain,path以及expires都是N/A

这个N/A的意思是默认,domain和path都是/,expires关闭浏览器过期.

domain表示二级域名等是否共享cookie,如果domain为cnblogs.com表示只有cnblogs.com享有此cookie,

而如果设置为.cnblogs.com(有个点),则i.cnbolgs.com,q.cnblogs.com以及全部二级域名都享受此cookie

如果设置为/,则cnblogs.com:8080也享有此cookie,应该没有没有正则的写法.

path表示目录,比如/sso,domain为cnblogs.com,只有cnblogs.com/sso目录下的页面享有此cookie

二. 普通的缺点.

1.微信小程序以及类似的不支持cookie

2.app的cookie关闭后就清空了(没试过)

3.安全性,https另说,没接触过

三.oath协议的四种模式

1.授权码

2.简化

3.密码

4.客户端

四.oath协议如何规避二中的缺点

只讨论授权码和简化模式

授权码模式有1,2,3,4,5五步,最后一步发送令牌是认证服务器通过request向第三方应用的服务器发送令牌,相比简化模式更安全.

简化没有第3步,第4步,只有1,2,5三步,因为简化模式假定没有网页没有服务器控制权,用户同意授权后认证服务器发送携带令牌的response返回第三方应用的页面.

oath协议中只需要令牌,令牌是普通字符串,不涉及cookie

而且令牌可以不需要https也能操作加密.

只需要client每次发送的时候在携带令牌即可.

而且令牌可以设置成定时更新,在用户没有察觉的情况下更新令牌,更安全.

但cookie的对应的session并没有办法更改jsessionid,如果为了安全30分钟让用户重新登录一次更换jsessionid,体验不好.

 

原文地址:https://www.cnblogs.com/ptqueen/p/8449150.html