OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商之间的被批准的交互动作代表用户,要么允许第三方应用代表用户获得访问的权限。同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程
OAuth2.0它只是一个提供认证流程的标准方案, 它的请求路径和参数都是统一的标准。
认证流程图如下:
(
1
)资源拥有者打开客户端,客户端要求资源拥有者给予授权,它将浏览器被重定向到授权服务器,重定向时会
附加客户端的身份信息。如:
/uaa/oauth/authorize?client_id=c1&response_type=code&scope=all&redirect_uri=http://www.baidu.com
参数列表如下:
client_id
:客户端准入标识。
response_type
:授权码模式固定为
code
。
scope
:客户端权限。
redirect_uri
:跳转
uri
,当授权码申请成功后会跳转到此地址,并在后边带上
code
参数(授权码)。
(
2
)浏览器出现向授权服务器授权页面,之后将用户同意授权。
(
3
)授权服务器将授权码(
AuthorizationCode
)转经浏览器发送给
client(
通过
redirect_uri)
。
(
4
)客户端拿着授权码向授权服务器索要访问
access_token
,请求如下:
/uaa/oauth/token?
client_id=c1&client_secret=secret&grant_type=authorization_code&code=5PgfcD&redirect_uri=http://w
ww.baidu.com
参数列表如下
client_id
:客户端准入标识。
client_secret
:客户端秘钥。
grant_type
:授权类型,填写
authorization_code
,表示授权码模式
code
:授权码,就是刚刚获取的授权码,注意:授权码只使用一次就无效了,需要重新申请。
redirect_uri
:申请授权码时的跳转
url
,一定和申请授权码时用的
redirect_uri
一致。
(
5
)授权服务器返回令牌
(access_token)
这种模式是四种模式中最安全的一种模式。一般用于
client
是
Web
服务器端应用或第三方的原生
App
调用资源服务
的时候。因为在这种模式中
access_token
不会经过浏览器或移动端的
App
,而是直接从服务端去交换,这样就最大
限度的减小了令牌泄漏的风险。
(6)验证 token 有效性路径 ../oauth/check_token