现今,已经有了Oauth2.0,写篇博客了解Oauth1.0的过程以及与2.0的区别。

  在Oauth官网  关于1.0的介绍:

 一、简介

  OAuth authentication is the process in which Users grant access to their Protected Resources without sharing their credentials(证书) with the Consumer. OAuth uses Tokens generated by the Service Provider instead of the User’s credentials in Protected Resources requests. The process uses two Token types:

  整个认证的过程是,用户通过共享证书的方式,将自己的受保护的资源授权给使用者使用。通过使用服务提供商提供的Tokens代替用户的证书来访问受保护的资源。

Request Token:
Used by the Consumer to ask the User to authorize access to the Protected Resources. The User-authorized Request Token is exchanged for an Access Token, MUST only be used once, and MUST NOT be used for any other purpose. It is RECOMMENDED that Request Tokens have a limited lifetime.
Access Token:
Used by the Consumer to access the Protected Resources on behalf of the User. Access Tokens MAY limit access to certain Protected Resources, and MAY have a limited lifetime. Service Providers SHOULD allow Users to revoke Access Tokens. Only the Access Token SHALL be used to access the Protect Resources.

 二、认证过程

OAuth Authentication is done in three steps:

  1. The Consumer obtains an unauthorized Request Token.
  2. The User authorizes the Request Token.
  3. The Consumer exchanges the Request Token for an Access Token

  下面是官方提供的流程图:

  1、Customer Requests ---  Request Token

    To obtain a Request Token, the Consumer sends an HTTP request to the Service Provider’s Request Token URL. The Service Provider documentation specifies the HTTP method for this request, and HTTP POST is RECOMMENDED. The request MUST be signed and contains the following parameters:

  oauth_consumer_key:
  The Consumer Key.
  oauth_signature_method:
  The signature method the Consumer used to sign the request. -- 用来签署该次请求 HMAC-SHA1, RSA-SHA1, and PLAINTEXT   三种签名方法。
  oauth_signature:
  The signature as defined in Signing Requests. -- 防止使用者使用未经授权的保护资源。
  oauth_timestamp:
  As defined in Nonce and Timestamp.
  oauth_nonce:
  As defined in Nonce and Timestamp. A nonce is a random string, uniquely generated for each request.
  oauth_version:
  OPTIONAL. If present, value MUST be 1.0 . Service Providers MUST assume the protocol version to be 1.0 if this parameter   is not present. Service Providers’ response to non-1.0 value is left undefined.
  Additional parameters:
  Any additional parameters, as defined by the Service Provider.

2、Service Provider Issues an Unauthorized Request Token

The Service Provider verifies the signature and Consumer Key. If successful, it generates a Request Token and Token Secret and returns them to the Consumer in the HTTP。服务商验证签名和使用者的Key,成功之后,生成RequestToken and Token Secret,以HTTP返回给用户。

oauth_token:
The Request Token.
oauth_token_secret:
The Token Secret.
Additional parameters:
Any additional parameters, as defined by the Service Provider.

3、Obtaining User Authorization

  此时使用者还不能访问资源,需要用户验证用户名密码等。

  1)、Consumer Directs the User to the Service Provider 使用者将用户导向到服务提供者,之后验证用户的合法性。

oauth_token:
OPTIONAL. The Request Token obtained in the previous step. The Service Provider MAY declare this parameter as REQUIRED, or accept requests to the User Authorization URL without it, in which case it will prompt the User to enter it manually.
oauth_callback:
OPTIONAL. The Consumer MAY specify a URL the Service Provider will use to redirect the User back to the Consumer when Obtaining User Authorization is complete.
Additional parameters:
Any additional parameters, as defined by the Service Provider.

  2)、Service Provider Authenticates the User and Obtains Consent.服务提供者验证用户并获得用户的同意

  3)、Service Provider Directs the User Back to the Consumer 将用户导向使用者。

3、Obtaining an Access Token 获取AccessToken

  1)、Consumer Requests an Access Token

    The Request Token and Token Secret MUST be exchanged for an Access Token and Token Secret. 使用上面获取的Request Token 和Token Secret 换取Access Token and Token Secret。

oauth_consumer_key:
The Consumer Key.
oauth_token:
The Request Token obtained previously.
oauth_signature_method:
The signature method the Consumer used to sign the request.
oauth_signature:
The signature as defined in Signing Requests.
oauth_timestamp:
As defined in Nonce and Timestamp.
oauth_nonce:
As defined in Nonce and Timestamp.
oauth_version:
OPTIONAL. If present, value MUST be 1.0 . Service Providers MUST assume the protocol version to be 1.0 if this parameter is not present. Service Providers’ response to non-1.0 value is left undefined.

  2)、Service Provider Grants an Access Token 授权Access Token。

4、Accessing Protected Resources

  接下来就是获取相应的资源了。

三、Oauth2.0过程

关于Oauth2.0的认证过程可以参见:http://www.cnblogs.com/plxx/p/3961632.html

四、两个版本的区别  

1、2.0的用户授权过程有2步,

A)引导用户到授权服务器,请求用户授权,用户授权后返回 授权码(Authorization Code)

B)客户端由授权码到授权服务器换取访问令牌(access token)

C)用访问令牌去访问得到授权的资源

1.0的授权分3步,

A)客户端到授权服务器请求一个授权令牌(request token&secret)

B)引导用户到授权服务器请求授权

C)用访问令牌到授权服务器换取访问令牌(access token&secret)

D)用访问令牌去访问得到授权的资源

2、1.0协议每个token都有一个加密,2.0则不需要。这样来看1.0似乎更加安全,但是2.0要求使用https协议,安全性也更高一筹。

3、2.0充分考虑了客户端的各种子态,因而提供了多种途径获取访问令牌

a)授权码

b)客户端私有证书

c)资源拥有者密码证书

d)刷新令牌

e)断言证书

1.0只有一个用户授权流程。

4、两个版本中的请求参数和token的内容有所改变。

Oauth1.0认证过程的更多相关文章

  1. OAuth2.0认证过程

    本文以腾讯微博为例,详细介绍OAuth2.0的认证过程. 在使用腾讯微博平台提供的API前,您需要做以下两步工作: 成为开发者,并申请appkey和appsecret 授权获取accesstoken ...

  2. C# 网络编程之豆瓣OAuth2.0认证具体解释和遇到的各种问题及解决

            近期在帮人弄一个豆瓣API应用,在豆瓣的OAuth2.0认证过程中遇到了各种问题,同一时候自己须要一个个的尝试与解决,终于完毕了豆瓣API的訪问.作者这里就不再吐槽豆瓣的认证文档了,毕 ...

  3. .net core 1.0 Web MVC 自定义认证过程

    通过官方的介绍可知,若要本地开始部署搭建一个基于.net core 1.0的Web应用,需要下载dotnet SDK,或在Visual Studio IDE之上安装相关插件以布置开发环境.为了使开发环 ...

  4. C#搭建Oauth2.0认证流程以及代码示例

    我认为对于一个普遍问题,必有对应的一个简洁优美的解决方案.当然这也许只是我的一厢情愿,因为根据宇宙法则,所有事物总归趋于混沌,而OAuth协议就是混沌中的产物,不管是1...0a还是2.,单看版本号就 ...

  5. 问题:OAuth1.0;结果:OAuth1.0协议

    OAuth1.0协议 概要 OAuth提供了一种client代表资源的拥有者访问server的方法,也就是在资源拥有者不向第三方提供证书(通常是指用户名和密码)的情况下,允许第三方使用用户代理重定向访 ...

  6. .Net WebApi 实现OAuth2.0认证

    现在多数公众平台提供的api都使用OAuth2.0认证模式,最近在搞Android方面的开发,身份认证和权限控制的各方面比较来说,使用OAuth认证的还是比较靠谱,OAuth2.0的协议可以参考htt ...

  7. 使用Owin中间件搭建OAuth2.0认证授权服务器

    前言 这里主要总结下本人最近半个月关于搭建OAuth2.0服务器工作的经验.至于为何需要OAuth2.0.为何是Owin.什么是Owin等问题,不再赘述.我假定读者是使用Asp.Net,并需要搭建OA ...

  8. OAuth2.0认证和授权原理

    什么是OAuth授权?   一.什么是OAuth协议 OAuth(开放授权)是一个开放标准. 允许第三方网站在用户授权的前提下访问在用户在服务商那里存储的各种信息. 而这种授权无需将用户提供用户名和密 ...

  9. hOAuth2.0认证和授权原理

    原文地址: http://www.6zou.net/tech/what_is_oauth.html http://www.phpddt.com/%E4%BA%8C%E6%AC%A1%E5%BC%80% ...

随机推荐

  1. LintCode-三数之和

    题目描述: 给出一个有n个整数的数组S,在S中找到三个整数a, b, c,找到所有使得a + b + c = 0的三元组. 注意事项 在三元组(a, b, c),要求a <= b <= c ...

  2. 在LINUX的命令提示符及CMD命令提示符中显示时间

    用途之一是可以查看某个命令或程序的执行时间. 一.CMD中显示时间设置 参数说明: $P:当前路径 $G:>(大于号) $T:当前时间,精确到0.01s 实验如下: C:\Users\g4-10 ...

  3. Android学习笔记(十七)——使用意图调用内置应用程序

    使用意图调用内置应用程序 1.创建一个新的Android项目并命名为Intents,在main.xml文件里加入两个Button: <Button android:id="@+id/b ...

  4. 拿出来分享了!VIP珍藏!!!全网最齐全的 DEDECMS模板 全盘下载地址列表!没有你找不到的!

    拿出来分享了!VIP珍藏!!!全网最齐全的 DEDECMS模板 网盘地址!没有你找不到的! 模板类型最齐全: ----------------------优美的走起!------------ 一:DE ...

  5. Ext JS学习第五天 Ext_window组件(二)

    此文用来记录学习笔记 •上一讲我们已经学过了window的使用,那么在这将中,我们将结合然后把Ext中需要注意的地方,以及组建的使用给予介绍.indow做几个Web开发的经典示例. •ExtWeb实战 ...

  6. jvm的内存区域简介

    1.内存区域划分 jvm在执行java程序过程中会将管理的内存划分成若干不同的数据区域,他们分别是程序计数器,堆,方法区,虚拟机栈,本地方法栈. 1.1指令计数器 指令计数器是线程私有的,每个线程都有 ...

  7. 创建BDC(Business Data Connectivity Service)

    创建Business Data Connectivity http://blog.csdn.net/spfarm/article/details/44015915 创建和使用Business Data ...

  8. HDU 4548 美素数(打表)

    HDU  4548  美素数(打表)解题报告 题目链接:http://acm.hust.edu.cn/vjudge/contest/view.action?cid=88159#problem/H 题目 ...

  9. BZOJ 1617: [Usaco2008 Mar]River Crossing渡河问题( dp )

    dp[ i ] = max( dp[ j ] + sum( M_1 ~ M_( i - j ) ) + M , sum( M_1 ~ M_i ) ) ( 1 <= j < i )  表示运 ...

  10. JavaScript学习笔记2-数组对象

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...