OAuth2.0是做什么的?
通过token方式,授权第三方应用访问服务器的特定资源。
(如:第三方应用微信登录获取用户头像微信名,或第三方应用调用后端短信发送模块短信发送接口。)
OAuth2.0授权的四种方式
-
授权码模式
授权流程:- 第三方应用通过client_id和客户端密码(可选)访问授权服务器验证客户端信息并注册回调(redirect)。(第三方需要提前在授权服务器注册)
- 用户在授权页面输入用户名密码(或二维码)进行授权。
- 授权服务器将用户导向redirect_url并附上返回授权码code。
- 第三方应用通过授权码访问授权服务器获取token(后端进行)。
- 第三方应用访问资源服务器获取相关资源。
-
简化模式
不通过第三方应用程序的服务器,直接在浏览器中向认证服务器申请令牌,跳过了"授权码"这个步骤。 -
密码模式
用户向客户端提供自己的用户名和密码。客户端使用这些信息,向"服务商提供商"索要授权。 -
客户端模式
客户端以自己的名义,而不是以用户的名义,向"服务提供商"进行认证。
应用场景
- 根据客户端是否受信选择授权码模式或者密码模式。密码模式需要用户直接将密码提供给客户端,而授权码模式不需要,安全性更强。
- 根据场景选择客户端模式,这种模式一般用于校验客户端是否有访问后端模块权限,后端资源一般是某些接口,没有用户概念,不需要用户授权,一般凭客户端id密码进行校验。
JWT
JWT是一种无状态token。可根据需求是否要求token回收,若不需要可选用JWT降低系统复杂度。