1.目标
了解OAUTH2统一认证的基本概念,了解OAUTH2协议流程,了解OAUTH2的各种模式和类型,了解Spring安全OAUTH的设计

2.分析
传统登录认证介绍单点登录认证介绍OAutp角色OAutp协议流程介绍OAutp授权类型OAutp授权代码模式流程OAutp简化模式OAutp密码模式OAutp客户端模式Spring安全OAuth设计
解释
3.1传统登录认证
传统上,用户每次访问服务时都必须登录一次。随着服务的增加,用户数据很难统一,开发成本增加,用户体验很差。
3.2单点登录身份验证
单点登录是通过统一的认证和授权对所有服务的登录操作。只需要一个认证服务器统一用户数据库,完成用户认证授权,控制资源访问,支持访问其他服务或第三方应用,扩展性强,降低开发和运维成本。
3.3办公自动化简介
OAuth 2.0是一个行业标准许可协议。OAuth 2.0专注于简化客户端开发者,同时为Web应用、桌面应用、手机等设备提供具体的授权流程。
OAutp的本质是向第三方应用发布一个具有时效性的Token令牌,让其他服务或第三方应用通过该令牌获取相关资源。常见场景:比如进入一个没有账号信息的网站,可以通过QQ、微信、支付宝等账号登录。本次登录过程采用Oautp协议;外部API服务接口一般由OAUTH2授权,如微信API、新浪API等。
官方文件:https://oauth.net/2/

3.4 OAutp角色
资源所有者:资源的所有者,拥有访问资源的实体。如果是某个人,那就叫最终用户。资源服务器:资源服务器,受保护的资源服务器,具有提供资源的能力,如订单服务、商品服务等。Client:客户端,不是指用户,而是向资源服务器发出请求的应用程序,如前端服务访问管理接口、后端业务功能接口等。授权服务器:授权服务器,可以向客户端颁发令牌。这就是上面提到的统一认证授权服务器。用户代理(User-agent):用户代理,作为资源所有者与客户端沟通的工具,如APP、浏览器等。
在资源所有者和客户端之间,资源所有者向客户端发起认证请求,客户端返回认证授权信息。在收到来自资源所有者的认证请求后,客户端将去授权服务器申请访问令牌。授权服务器将让客户端进行身份验证,并在通过后返回访问令牌。客户端获取授权服务器的访问令牌,访问资源服务器,经资源服务器验证后返回受保护的资源信息。资源服务器可以通过JWT在本地验证,或者访问授权服务器验证客户端请求的合法性。
3.6授权类型
OAutp分为四种授权类型,即:
授权码:授权码模式,先通过认证获得授权码,然后申请令牌访问资源。隐式:用于简单的应用,如问卷调查等。用户认证通过后,认证服务器直接将令牌返回给应用服务。与授权码模式相比,这种模式获取授权码的步骤更少,简化了交互,但存在令牌过期和暴露的问题。资源密码凭证:当资源所有者和客户端之间存在高度信任时,客户端可以存储用户密码。客户端凭证:这种模式可以根据客户端的id和密钥直接获取令牌,无需用户参与,适合内部API应用服务。
我们在这里使用密码模式。
3.9密码模式
资源所有者直接通过客户端发起身份验证请求。客户端提供用户名和密码,并向认证服务器发起认证请求。服务器通过认证后,客户端在获得令牌token后,可以向第三方资源服务器请求资源。
令牌请求:
br _ type = password//required username = {用户ID }//required password = { password }//required scope = {授权范围}//any

令牌响应:
" access_token":"{ access token} ",//必需的" token_type":"{ token type} ",//必需的" expires_in":"{ expiration time} ",//任意的" refresh_token":"{ refresh token} ",//
这种模式简化了相关步骤,直接通过用户、密码等私密信息请求认证,认证服务器直接返回token,要求整个环境具有很高的安全性。
生产实践
该项目仍在编码阶段,所以代码不会被张贴。完了我再分享。


