0
点赞
收藏
分享

微信扫一扫

OAuth

简介

OAuth 是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是 2.0 版。

OAuth 在客户端与服务端之间,设置了一个授权层(authorization layer)。客户端不能直接登录服务端,只能登录授权层,以此将用户与客户端区分开来。客户端登录授权层所用的令牌(token),与用户的密码不同。

用户可以在登录的时候,指定授权层令牌的权限范围和有效期。客户端登录授权层以后,服务端根据令牌的权限范围和有效期,向客户端开放用户储存的资料。OAuth 2.0 定义了四种授权方式:授权码模式(authorization code)、简化模式(implicit)、密码模式(resourceowner password credentials)和客户端模式(client credentials)。

流程

• 用户打开客户端以后,客户端要求用户给予授权

• 用户同意给予客户端授权

• 客户端使用上一步获得的授权,向认证服务器申请令牌

• 认证服务器对客户端进行认证以后,确认无误,同意发放令牌

• 客户端使用令牌,向资源服务器申请获取资源

• 资源服务器确认令牌无误,同意向客户端开放资源

授权码模式

授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与服务端的认证服务器进行互动。

其流程为:

• 用户访问客户端,后者将前者导向认证服务器

• 用户选择是否给予客户端授权

• 假设用户给予授权,认证服务器将用户导向客户端事先指定的” 重定向 URI”(redirection URI),同时附上一个授权码

• 客户端收到授权码,附上早先的” 重定向 URI”,向认证服务器申请令牌

• 认证服务器核对了授权码和重定向 URI,确认无误后,向客户端发送访问令牌(access token)和更新令牌(refresh token)

A 步骤中,客户端申请认证的 URI,包含以下参数:

• response_type:表示授权类型,必选项,此处的值固定为 code

• client_id:表示客户端的 ID,必选项

• redirect_uri:表示重定向 URI,可选项

• scope:表示申请的权限范围,可选项

• state:表示客户端的当前状态,需动态指定,防止 CSRF


举报

相关推荐

0 条评论