oauth2 的受权方式前端
要能访问各类资源重点是要获取令牌(token),但根据令牌的获取方式不一样,又会有四种受权方式后端
受权码:这是最经常使用的一种方式,指的是第三方应用先申请一个受权码,而后再用该码获取令牌,项目中用的就是这种安全
隐藏式:容许直接向前端颁发令牌。这种方式没有受权码这个中间步骤,因此称为(受权码)"隐藏式"(implicit),通常应用于纯前端项目网站
密码式:直接经过用户名和密码的方式申请令牌,这方式是最不安全的方式命令行
凭证式:这种方式的令牌是针对第三方应用,而不是针对用户的,既某个第三方应用的全部用户共用一个令牌,通常用于没有前端的命令行应用code
第一步,A 网站提供一个连接,用户点击后就会跳转到 B 网站,受权用户数据给 A 网站使用blog
http://b.com/oauth/authorize?token
response_type=code&ci
client_id=CLIENT_ID&资源
redirect_uri=CALLBACK_URL&
scope=read
第二步,用户跳转后,B 网站会要求用户登陆,而后询问是否赞成给予 A 网站受权。用户表示赞成,这时 B 网站就会跳回redirect_uri参数指定的网址
http://a.com/callback?code=AUTHORIZATION_CODE
第三步,A 网站拿到受权码之后,就能够在后端,向 B 网站请求令牌。
http://b.com/oauth/token?
client_id=CLIENT_ID&
client_secret=CLIENT_SECRET&
grant_type=authorization_code&
code=AUTHORIZATION_CODE&
redirect_uri=CALLBACK_URL
上面 URL 中,client_id参数和client_secret参数用来让 B 确认 A 的身份(client_secret参数是保密的,所以只能在后端发请求),grant_type参数的值是AUTHORIZATION_CODE,表示采用的受权方式是受权码,code参数是上一步拿到的受权码,redirect_uri参数是令牌颁发后的回调网址。
第四步,B 网站收到请求之后,就会颁发令牌。具体作法是向redirect_uri指定的网址,发送一段 JSON 数据。
{
"access_token":"ACCESS_TOKEN",
"info":{...}
}
接下来用户就能够根据这个access_token来进行访问了
对于第三方网站来讲 可分为3部分
一、申请code
二、申请token
三、带着token去请求资源(如:申请获取用户信息)