OAuth : open Authorization  开发授权

用户访问慕课网,慕课网请求OAuth登陆页面,用户输入QQ号码和密码,这个页面的域名不属于慕课网是属于QQ的,随后把结果给慕课网,这个结果并不包含QQ号码,只是告诉慕课网当前用户是否登陆成功。

OAuth有2个版本。1.0 和 2.0
.0发布于2007年
.0发布于2010年 OAuth:
.QQ用户授权慕课网使用QQ账号登陆
.使用QQ的API一键分享
.一个淘宝账号可以登陆淘宝所有其旗下的网站(阿里云、支付宝)。

不仅仅慕课需要QQ登陆功能,还有很多网站也要QQ登陆功能。需要提供网站站点的描述、域名、回调地址,QQ会给慕课网分配appid和appkey,就好像是账号和密码一样,appid是唯一的。

Redirect_uri是用户成功登陆之后跳转到哪里去,跳转过程中会加一个code参数,慕课网可以拿到这个code,这个code也会被别人获取,

client_id和cilent_secret是appid和appkey,code是用户授权登陆之后拿到的参数,code是会过期的5秒到一分钟,时间太长就会认为出现了问题。劫持到code必须在很短时间内破解,并且还要找到appid和appkey不是很容易的事情。再次检验了这个请求是不是合法的服务器发起的请求,对appkey做了比对,并看这个code是不是上个步骤发给慕课的code。这个请求的响应就是用户的QQ号码和头像。

Token是令牌,通行证。
第三方站点获取了用户的token,就可以QQ分享等功能了。
任意一次访问api都需要重新拼接url,并且url中带有accesstoken,访问同一个接口动态拼接出来的url都不一样。Post请求更安全。

AccessToken也有生命周期,但是比code时间长,一般是10天半个月几个小时,AccessToken只要没过期就可以一直使用AccessToken来访问api。
AccessToken过期:、重新使用QQ号码登录。、如果需要新的AccessToken,就携带参数要求重新分配新的AccessToken。

当QQ登陆完成后会返回一个code(字符串)到指定的回调地址上,然后根据code请求AccessToken(字符串),code是有有效时间的。AccessToken过期了会通过refresh_token换取新的AccessToken。换取新的AccessToken和第一次获取AccessToken是差不多的。

openID是每个用户的唯一标识,同一个QQ用户在不同站点使用QQ登陆的openID是一样的。

授权过程完成了,后面就是通过AccessToken和openID来调用api。AccessToken和openID可以放到cookie里面去,AccessToken的有效时长是保存在session里面,

自己的web应用请求新浪微博的登陆页面,用户输入微博的账号密码,登陆成功之后返回一个有效时间很短的code给自己的web应用,动态拼接code+appid+appkey给新浪,返回AccessToken给自己的应用,就可以通过AccessToken在有效期内以用户的身份调用api。

OAuth : open Authorization 开发授权的更多相关文章

  1. [转]OAuth 2.0 - Authorization Code授权方式详解

    本文转自:http://www.cnblogs.com/highend/archive/2012/07/06/oautn2_authorization_code.html I:OAuth 2.0 开发 ...

  2. OAuth 2.0 - Authorization Code授权方式详解

    I:OAuth 2.0 开发前期准备 天上不会自然掉馅饼让你轻松地去访问到人家资源服务器里面的用户数据资源,所以你需要做的前期开发准备工作就是把AppKey, AppSecret取到手 新浪获取传送门 ...

  3. asp.net权限认证:OWIN实现OAuth 2.0 之授权码模式(Authorization Code)

    asp.net权限认证系列 asp.net权限认证:Forms认证 asp.net权限认证:HTTP基本认证(http basic) asp.net权限认证:Windows认证 asp.net权限认证 ...

  4. SimpleSSO:使用Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端

    目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Security.SimpleSSO模拟OpenID认证 通过authorization co ...

  5. Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端

    Microsoft.Owin.Security.OAuth搭建OAuth2.0授权服务端 目录 前言 OAuth2.0简介 授权模式 (SimpleSSO示例) 使用Microsoft.Owin.Se ...

  6. OAuth 2.0 开发完全详解

    --------------------------基础篇------------------------------- I:OAuth 2.0 概述 首先大家来看看国内新浪跟腾讯这两大头对OAuth ...

  7. springboot oauth 鉴权之——授权码authorization_code鉴权

    近期一直在研究鉴权方面的各种案例,这几天有空,写一波总结及经验. 第一步:什么是 OAuth鉴权 OAuth2是工业标准的授权协议.OAuth2取代了在2006创建的原始OAuthTM协议所做的工作. ...

  8. OAuth 2.0之授权码模式

    转载自:http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html OAuth 2.0授权码模式 授权码模式(authorization code)是功 ...

  9. Spring Authorization Server授权服务器入门

    11月8日Spring官方已经强烈建议使用Spring Authorization Server替换已经过时的Spring Security OAuth2.0,距离Spring Security OA ...

随机推荐

  1. ceil 和floor

    ceil 天花板 floor 地板 ceil向上取整 foor向下取整

  2. SQL Fundamentals || 多表查询(内连接,外连接(LEFT|RIGHT|FULL OUTER JOIN),自身关联,ON,USING,集合运算UNION)

    SQL Fundamentals || Oracle SQL语言 一.多表查询基本语法 在进行多表连接查询的时候,由于数据库内部的处理机制,会产生一些“无用”的数据,而这些数据就称为笛卡尔积. 多表查 ...

  3. easyui-combo个人实例

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  4. referrer privacy hotlinking

    https://en.wikipedia.org/wiki/HTTP_referer https://zh.wikipedia.org/wiki/HTTP参照位址 inline linking, of ...

  5. iOS - UITableView 编辑(cell的插入, 删除, 移动)

    UITableView Cell的插入/删除 核心API Class : UITableView Delegate : UITableViewDataSource, UITableViewDelega ...

  6. Spring Data 介绍 (一)

    简介 Spring Data是什么 Spring Data是一个用于简化数据库访问,并支持云服务的开源框架.其主要目标是使得对数据的访问变得方便快捷 Spring Data JPA能干什么 可以极大的 ...

  7. mysql主从服务器的配置

    使用mysql主从复制的好处有: 1.采用主从服务器这种架构,稳定性得以提升.如果主服务器发生故障,我们可以使用从服务器来提供服务. 2.在主从服务器上分开处理用户的请求,可以提升数据处理效率. 3. ...

  8. 在scrapy中使用mongodb管道

    pipelines.py import json from scrapy.conf import settings from pymongo import MongoClient class SunP ...

  9. json数据处理:读取文件中的json字符串,转为python字典

    方法1: 读取文件中的json字符串, 再用json.loads转为python字典 import json str_file = './960x540/config.json' with open( ...

  10. python center() 函数

    center Python center() 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串.默认填充字符为空格. 语法 center()方法语法: str.center(widt ...