登录方案
登录方案
常⽤⽅案总览
1. 容器session
2. 共享session
3. ⽆状态token
4. ⽆状态签名
5. CAS
6. OAuth2.0
容器Session
优点:Servlet容器⾃带,⽆需引⼊其它配置即可使⽤。
缺点:只有⾃⼰可以使⽤,⽆法共享,针对分布式应⽤不适⽤。
共享Session
优点:通过第三⽅组件(如Redis、MemCache)可以进⾏Session的共享,然后满⾜分布式应⽤的需求。
缺点:所有分布式应⽤最好在同⼀个局域⽹中,不然存取Session数据的时候效率将成为问题。
⽆状态Token
优点:Token的签发放和使⽤⽅使⽤同样的密钥及算法就可以完成token中数据的共享,可以解决分布式
应⽤跨⽹络的缺陷,⽐如Jwt。
缺点:签发的Token不好控制过期,Token中存储的数据相对有限。
⽆状态签名
优点:不仅可以验证身份,并且可以达到防数据串改。
缺点:权限体系及流程更复杂。
另外签名⽅式也分两种场景:
1. 客户端安全:⽐如对接微信或⽀付宝,数据⼀般都通过RSA或MD5等⽅式签名,密钥是固定的,对
应的密钥是客户端⾃⾏在⽀付宝或微信等服务端配置或下载。
2. 客户端不安全:虽然签名⽅式和第1种情况⼏乎⼀样,但因为客户端不安全,所以密钥不能是固定
的。所以必须多⼀层密钥交换的流程,以达到每个客户端密钥都不相同,这样安全性才能得到保
证。
CAS关于CAS的理解,可以阅读CAS实现SSO单点登录原理
OAuth2.0
关于OAuth2的理解,可以阅读阮⼀峰的理解OAuth 2.0
CAS的单点登录,资源都在客户端这边,不在CAS的服务器那边,CAS服务器只告诉你当前登录的
这个⼈是谁。
OAuth2.0认证,资源都在OAuth2.0服务提供者那边,客户端是想索取⽤户的资源。
针对服务端开发来说,CAS登录和OAuth2.0在流程上的最⼤区别就是,通过ST或者code去认证的
时候,需不需要预先商量好的密码。
原创不易,如果感觉不错,希望给个推荐!您的支持是我写作的最大动力!