程序员对Gitee
和Github
都不陌生,Github
可能是起源时间最早、用户范围最大的代码开源仓库,Gitee
作为国产代码仓库的后起之秀,在用户模块也是做到了兼容Github
的功能,如,在Gitee
的登录界面可以通过Github
授权的方式登录。这就是今天我要讲的OAuth 2.0
,大家可以去Gitee
体验一下UI交互流程,以更形象的理解OAuth 2.0
的授权流程。
作用:
使客户端安全可控的获取”用户“授权,与服务提供商交互。
摘自RFC 6749.
用户授权方式有五种:
认证流程:
Access Token: An OAuth Access Token is a string that the OAuth client uses to make requests to the resource server. Refresh Token: An OAuth Refresh Token is a string that the OAuth client can use to get a new access token without the user’s interaction. Scope: Scope is a mechanism in OAuth 2.0 to limit an application’s access to a user’s account. An application can request one or more scopes, this information is then presented to the user in the consent screen, and the access token issued to the application will be limited to the scopes granted.
更为形象的流程-来自阿里云 SP:客户端 IDP:认证服务器
A步骤中,客户端申请认证的URI,包含以下参数:
如: http://example.com?code=xxx&state=test&response_type=code&client_id=xxxx&redirect_uri=xxxx.com C步骤中,服务器回应客户端的URI,包含以下参数:
D步骤中,客户端申请服务端令牌,入参有:
返回值有:
认证流程完成,接下来就可以拿服务端生成的Access Token获取服务端的资源了。
Access Token 一般都设有过期时间,在访问时如果客户端的访问令牌已经过期,则需要使用”更新令牌“申请一个新的访问令牌。入参使用grantType、refreshToken、scope。