OAuth2:隐式授权(Implicit Grant)类型的开放授权
适用范围
仅需临时访问的场景
用户会定期在API提供者那里进行登录
OAuth客户端运行在浏览器中(Javascript、Flash等)
浏览器绝对可信,因为该类型可能会将访问令牌泄露给恶意用户或应用程序
流程剖析

1. 让用户明白所做的操作并请求认证
这一步与授权码认证模式中的操作类似,即当牵涉到OAuth认证时,应首先让用户明确该操作。然后将用户引导至授权页面。
该授权接口的URL会在开发者文档中给出,以谷歌为例:
https://accounts.google.com/o/oauth2/auth
在请求该页面时还需附带几个参数:
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 stringvar 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的过程,因此变得更为简单。但正因为如此也降低了安全性。
OAuth2:隐式授权(Implicit Grant)类型的开放授权的更多相关文章
- OAuth2:客户端证书授权(Client Credentials)类型的开放授权
适应范围 认证服务器不提供像用户数据这样的重要资源,仅仅是有限的只读资源或者一些开放的API.例如使用了第三方的静态文件服务,如Google Storage或Amazon S3.这样,你的应用需要通过 ...
- 显示转换explicit和隐式转换implicit
用户自定义的显示转换和隐式转换 显式转换implicit关键字告诉编译器,在源代码中不必做显示的转型就可以产生调用转换操作符方法的代码. 隐式转换implicit关键字告诉编译器只有当源代码中指定了显 ...
- Scala 隐式(implicit)详解
文章正文 通过隐式转换,程序员可以在编写Scala程序时故意漏掉一些信息,让编译器去尝试在编译期间自动推导出这些信息来,这种特性可以极大的减少代码量,忽略那些冗长,过于细节的代码. 1.Spark 中 ...
- C++ - 模板类模板成员函数(member function template)隐式处理(implicit)变化
模板类模板成员函数(member function template)隐式处理(implicit)变化 本文地址: http://blog.csdn.net/caroline_wendy/articl ...
- [Selenium]显式等待 Explicit wait & 隐式等待 Implicit wait
显式等待 Explicit wait 显示等待 , 就是明确的要等到某个元素出现或者某个元素满足某种条件,每隔一段时间检查一次,等不到,就一直等,如果在规定的时间内还没有找到,就跳出来检查间隔的时间和 ...
- Scala之隐式转换implicit详解
假设我们有一个表示文本的行数的类LineNumber: class LineNumber ( val num : Int ) 我们可以用这个类来表示一本书中每一页的行数: val lineNumOfP ...
- C# 3.0 / C# 3.5 隐式(推断)类型 var
概述 你可能对隐式类型(或隐式推断类型)这个名称比较陌生,但是 var 这个关键字应该很熟悉. 在 C# 中使用 var 声明一个对象时编译器会自动根据赋值语句推断这个局部变量的类型. 赋值以后,这个 ...
- c++隐式转换(implicit conversion)
1.缘由 最近在使用nlohmann的json,发现有些地方不是特别好用,所以就想自己修改一下(目的是为了增加类似jsoncpp中可以//增加注释的功能),在看源码的时候看到了一个迷惑的地方,就是解析 ...
- C#隐式FTPS (Implicit FTPS)
實現的方式是通過第三方程式庫實現的,當然最主要的是開源且免費,已測試過沒有問題! 目前還沒有直接取得目錄FileInfo list的方法,不過還好可以用GetDirectoryList來取得類似的結果 ...
随机推荐
- 遇到一个json解码失败的问题
今日批量导入游戏, 从别人接口拉去的字符串json_decode总是失败, 但是把log里面记录的解码失败的字符串copy出来单独解析,却可以成功. 排除了是字符编码的问题后, 还是不行, 百思不得其 ...
- hdu 4825 && acdream 1063 01字典树异或问题
题意: 给一个集合,多次询问,每次给一个k,问你集合和k异或结果最大的哪个 题解: 经典的01字典树问题,学习一哈. 把一个数字看成32位的01串,然后查找异或的时候不断的沿着^为1的路向下走即可 # ...
- win10:家庭版开启组策略
1.新建一个txt文件 2.复制以下内容到txt文件 @echo off pushd "%~dp0" dir /b C:\Windows\servicing\Packages\Mi ...
- 36)django-jsonp跨域
一:什么是JSONP JSONP(JSON with Padding)是JSON的一种"使用模式",可用于解决主流浏览器的跨域数据访问的问题.由于同源策略,一般来说位于 serve ...
- rsyslog的安装、使用、详解
操作系统:CentOS release 6.7 download yum repo file:rsyslogall.repo [rsyslog-v8-stable] name=Adiscon Rsys ...
- php学习随笔--定时触发
PHP访问接口方法:
- CSS学习——基础分类整理
1. CSS 层叠样式表: Cascading Style Sheets,定义如何显示html元素 CSS规则: 选择器{属性: 值; 属性: 值;} CSS注释: /*在这里写注释说 ...
- STL 容器区别:vector、list、deque、set、map的底层实现
https://blog.csdn.net/shawjan/article/details/45424405
- js之DOM对象一
一.什么是HTML DOM HTML Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM 把 HTML 文档呈现 ...
- LeetCode(69):x 的平方根
Easy! 题目描述: 实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: ...