参照https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html
以下为自己的理解整理,授权码和密码模式是用户使用第三方平台账号授权给客户端应用,来获取受第三方平台保护的用户信息,完成在客户端自动注册的过程;简化模式是用户使用第三方账号,通过客户端前端程序去第三方平台获取受保护的用户信息,并保存在用户代理端(浏览器、APP);客户端模式主要完成用户请求客户端服务时,客户端需要调用其他系统的服务(微服务接口)来获取其他系统受保护的资源。
一、授权码模式
二、简化模式(隐藏式)
三、密码模式
四、客户端模式
五、总结
1、授权码,适合客户端有后台应用可存储token信息的情况,token存放在客户端的后台,安全性最高,适合外部用户登录访问。
2、简化模式(隐藏式),客户端client无后台应用(前后端分离后,用户直接访问前端程序),访问的令牌需要保存在前端(如浏览器),不安全,令牌有效期不能太长了。
3、密码模式,因为用户名和密码需要提交给客户端(client),不太安全,适合对client应用相当信任的场景,比如公司内部用户访问公司内部系统。
4、客户端模式,不需要用户授权,适合后台服务间的认证和访问。
5、使用spring security oauth2,实现自己的第三方认证平台。