oAuth 认证
这段时间公司开发项目用到oAuth2协议,现在做一下梳理。
CORS即Cross Origin Resouce Share,跨域资源共享;是W3C为防止脚本攻击,而制定的安全标准之一,它允许浏览器向跨域服务器发送XMLHttpRequest请求;
跨域域问题,伴随而来的就是前端项目中的权限认证问题。
1. 基本逻辑:
跨域请求分为两种:简单请求、非简单请求,两种情景处理具体细节不同,但实现逻辑相同
1. 用户使用用户名、密码登录;
2. 后台校验用户信息;
3. 跳转至oAuth认证接口,返回token、refresh token、token expires;(此处token一般有有效期)
4. 用户携带token值与后台DB服务通过http/https交互;
5. token 值到期后;用户携带refresh token请求oAuth token刷新接口更新token并通过响应发送至客户;
6. 重复第4、第5步,保证token有效可用状态下,与后台进行交互

oAuth2的协议.里面有两个比较常用的接口.
1. 获取token
接口: /oauth/token?
参数: (grant_type是写规定好的,其它的两个自定义)
- grant_type=password
- username=development@sometech.com
- password=oQd-BfT-cer-7LP
完整的样例:http://localhost:9000/oauth/token?grant_type=password&username=development@sometech.com&password=oQd-BfT-cer-7LP
返回结果样例:
{
"access_token": "beeaa54e-8391-4de0-8ba6-ce145b3fb812",
"token_type": "bearer",
"refresh_token": "8129769a-d804-46c7-856a-3bacd409b650",
"expires_in": 3599,
"scope": "read write"
}
2. 刷新token
接口:http://localhost:9000/oauth/token?
参数:(refresh_token是根据1中的来定的.其它参数是固定的)
- client_id=dashboard
- client_secret=secret
- grant_type=refresh_token
- refresh_token=43dca105-627e-4f50-86e8-0c22c2f3abe9
样例: http://localhost:9000/oauth/token?client_id=dashboard&client_secret=secret&grant_type=refresh_token&refresh_token=43dca105-627e-4f50-86e8-0c22c2f3abe9
返回结果
{
"access_token": "0135c92b-12ab-4af9-88f4-97ef85115e71",
"token_type": "bearer",
"refresh_token": "75d209b5-a30d-43a8-abcd-850e7fb62e76",
"expires_in": 3599,
"scope": "read write"
}
3. CORS仅仅是实现跨域请求的一种,还有其他多种方案,如
jsonp、document.domain、window.name、window.postMessage、CSST(css text Transformation)、flash等。
--end
oAuth 认证的更多相关文章
- OAuth认证原理及HTTP下的密码安全传输
很多人都会问这样一个问题,我们在登录的时候,密码会不会泄露?随便进一个网站,登录时抓包分析,可以看到自己的密码都是明文传输的,在如此复杂的web环境下,我们没有百分的把握保证信息在传输过程中不被截获, ...
- HTTP下密码的安全传输、OAuth认证
在复杂的web环境下,我们没有百分的把握保证信息在传输的过程中不被接货,那不是用明文如何告诉服务器自己的身份呢? 在一些高度通信安全的网络中,数据传输会使用HTTPS作为传输协议,但是通常情况下我们没 ...
- 拿nodejs快速搭建简单Oauth认证和restful API server攻略
拿nodejs快速搭建简单Oauth认证和restful API server攻略:http://blog.csdn.net/zhaoweitco/article/details/21708955 最 ...
- 一步一步搭建 OAuth 认证服务器
http://www.fising.cn/2011/03/%E4%B8%80%E6%AD%A5%E4%B8%80%E6%AD%A5%E6%90%AD%E5%BB%BA-oauth-%E8%AE%A4% ...
- JAVA Oauth 认证服务器的搭建
http://blog.csdn.net/binyao02123202/article/details/12204411 1.软件下载 Oauth服务端: http://code.google.com ...
- Oauth认证简介
Oauth是什么: 1.Oauth是一种安全认证的协议: 2.Oauth为用户资源的授权提供了一个安全的.开放而又简易的标准: 3.Oauth的授权不会使第三方触及到用户的账号信息(用户名和密码). ...
- 新浪微博客户端开发之OAuth认证篇
新浪微博客户端开发之OAuth认证篇 2013年7月29日新浪微博客户端开发 OAuth2.0授权机制我在这里就不浪费口舌了,有很多大牛都发表过相关的文章解释OAuth2.0认证的流程,我就随便找了一 ...
- 服务端API的OAuth认证实现
http://stackoverflow.com/questions/12499602/body-joints-angle-using-kinect?rq=1 新浪微博跟update相关的api已经挂 ...
- Oauth认证的时候报错:timestamp_refused
今天server大规模报错,大部分用户无法登陆,小部分能够登陆,非常是奇怪. 查看log.调试代码,发现问题是在oauth认证的时候出了问题,报 timestamp_refused. google了下 ...
- 豆瓣api之OAuth认证
豆瓣api通过OAuth允许第三方应用访问用户数据,所以OAuth认证就是我们整个project的基础了. OAuth认证听起来挺神秘,其实挺简单的. 现在的大型网站的开放平台的认证几乎都是采用OAu ...
随机推荐
- jQuery Ajax封装(附带加载提示和请求结果提示模版)
1.创建HTML文件(demo) <!doctype html> <html lang="en"> <head> <meta charse ...
- PHP安装phpredis扩展
phpredis 的github地址:https://github.com/nicolasff/phpredis第一步:切换到指定的目录,然后wget https://github.com/nicol ...
- 【LeetCode】190. Reverse Bits
题目: Reverse bits of a given 32 bits unsigned integer. For example, given input 43261596 (represented ...
- Canvas画布实现自定义时钟效果
<!doctype html> <html> <head> <meta charset="utf-8"> <title> ...
- 1.如何安装ubuntu
1.先安装vmvare workstation VMware Workstation 12序列号: 5A02H-AU243-TZJ49-GTC7K-3C61N 2.下载ubuntu镜像 3.安装
- Vim按Esc后光标左移问题的解决
参考了这篇文章http://vim.wikia.com/wiki/Prevent_escape_from_moving_the_cursor_one_character_to_the_left 在Vi ...
- centos生成公钥私钥 securecrt通过公钥访问服务器 winscp通过公钥访问服务器
忙碌了一下午,一直到写博客现在.都在纠结阿里云服务器上配置公钥私钥,网上的说辞总是参差不齐,需要各个去综合,合理取舍.今天终于配置好了. 我就不说这种方式的重要性了,往往黑客都不需要你的登陆账户密码就 ...
- 以芯片直读方式得到的全盘镜像解析及ext4日志区域解析
之前在centos中分析了/dev/sda1下的结构,但当对象是一块以芯片直读方式作出来的全盘镜像呢? 这次以安卓手机的全盘镜像为对象,尝试按照ext4文件系统结构手动解析,加强对ext4文件系统.E ...
- 【Stack Overflow -- 原创加工、原创整理、生产实战】-- 深度复制
一.说明 1.本程序的核心代码不是我原创的,是我在Stack Overflow上搜集后加工出来的,原作者已忘记了~ 2.这段程序是我在上海携程(2014年左右)上班时整理并在生产环境应用的,先后经历了 ...
- Java之初识
今天开始学习Java 1.什么是Java? Java是1995年由sun公司推出的一门极富创造力的面向对象编程语言,是由Java之父詹姆斯格斯林博士设计的. Java名字的由来:据说,java刚刚设计 ...