2023-03-02 18:29:59
OAuth在“客户端”和“服务端”之间设置了一个授权层(authorization layer),以此将用户与客户端区分开来。OAuth认证流程通常包括以下几个步骤:
用户授权请求:
用户点击通过第三方(如Google)登录某平台(如平台A)。
跳转到授权页面,该页面的URL包含client_id(在第三方平台申请的应用ID)和redirect_uri(授权成功后的回调地址)等参数。
用户授权并获取授权码:
用户在授权页面进行授权操作。
授权成功后,页面自动跳转到redirect_uri定义的URL,并在URL末尾添加一个code参数(授权码)。
客户端通过授权码获取访问令牌:
客户端使用上一步获取的code参数,通过POST请求向第三方平台的Token端点(如
请求中包含client_id、client_secret(在第三方平台申请时提供的APP Secret)、grant_type(填写为authorization_code)、code以及redirect_uri等参数。
第三方平台返回访问令牌:
第三方平台验证请求的有效性后,返回访问令牌(Access Token)及相关数据,如令牌的有效期(expires_in)和当前授权用户的UID等。
客户端使用访问令牌访问资源:
客户端使用获取到的Access Token访问被保护的资源。
如果Access Token有效,第三方平台返回相应的资源。
访问令牌过期后的刷新:
当Access Token过期时,客户端可以使用Refresh Token向第三方平台请求新的Access Token,而无需用户再次进行授权操作。
当Access Token过期或失效时,客户端可以使用Refresh Token向认证服务器请求新的Access Token,而无需用户再次进行授权操作。
减少了用户频繁登录的次数,提高了用户体验。
Refresh Token认证流程:
图片展示:


通过以上流程和机制,OAuth实现了在客户端和服务端之间安全、有效地传递访问权限,同时保护了用户的账号和密码信息不被泄露。