OAuth2:隐式受权(Implicit Grant)类型的开放受权

适用范围浏览器

仅需临时访问的场景安全

用户会按期在API提供者那里进行登陆app

OAuth客户端运行在浏览器中(Javascript、Flash等)google

浏览器绝对可信,由于该类型可能会将访问令牌泄露给恶意用户或应用程序url

流程剖析spa

1. 让用户明白所作的操做并请求认证code

这一步与受权码认证模式中的操做相似,即当牵涉到OAuth认证时,应首先让用户明确该操做。而后将用户引导至受权页面。
该受权接口的URL会在开发者文档中给出,以谷歌为例:blog

https://accounts.google.com/o/oauth2/authtoken

在请求该页面时还需附带几个参数:接口

client_id

在应用注册时提供

redirect_uri

受权认证后的重定向地址

scope

应用所请求访问的数据,通常由空格分隔的多个字符串组成

response_type

对于此受权类型来讲为“token”,即在受权成功后会返回access token

2. 从URL中解析access token

当受权顺利完成后,用户会被重定向到redirect_uri中指定的URL并附带access_token等重要数据,它们会包含在url hash中,例如:

http://example.com/callback#access_token=ya29GAHES6ZSzX&token_type=Bearer&expires_in=3600

JavaScript是不会自动将解析hash段中的元素解析成键/值对,所以咱们须要手动进行该操做:

1
2
3
4
5
6
7
8
var  oauthParams = {};
// parse the query string
var  params = {}, queryString = location.hash.substring(1), regex = /([^&=]+)=([^&]*)/g, m;
while  (m = regex.exec(queryString)) {
     oauthParams[decodeURIComponent(m[1])] = decodeURIComponent(m[2]);
}
...

3. 访问API

拿到了access_token,API接口就向你敞开了大门,接下来的操做我想就无需阐述了。

从整个流程能够看出,相比受权码受权,隐式受权少了第一步获取Authorization Code的过程,所以变得更为简单。但正由于如此也下降了安全性。

 
 
相关文章
相关标签/搜索