精华内容
下载资源
问答
  • OAuth

    2011-04-05 21:16:00
    OAuth

    OAUTH简介

    OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。同时,任何第三方都可以使用OAUTH认证服务,任何服务提供商都可以实现自身的OAUTH认证服务,因而OAUTH是开放的。业界提供了OAUTH的多种实现如PHP,JavaScript,Java,Ruby等各种语言开发包,大大节约了程序员的时间,因而OAUTH是简易的。目前互联网很多服务如Open API,很多大头公司如Google,Yahoo,Microsoft等都提供了OAUTH认证服务,这些都足以说明OAUTH标准逐渐成为开放资源授权的标准。  在官方网站的首页,可以看到下面这段简介:  An open protocol to allow secure API authorization in a simple and standard method from desktop and web applications.  大概意思是说OAUTH是一种开放的协议,为桌面程序或者基于BS的web应用提供了一种简单的,标准的方式去访问需要用户授权的API服务。OAUTH类似于Flickr Auth、Google's AuthSub [1] 、Yahoo's BBAuth、 Facebook Auth等。OAUTH认证授权具有以下特点:  1. 简单:不管是OAUTH服务提供者还是应用开发者,都很容易于理解与使用;  2. 安全:没有涉及到用户密钥等信息,更安全更灵活;

      3. 开放:任何服务提供商都可以实现OAUTH,任何软件开发商都可以使用OAUTH;

     

    OAUTH产生的背景

      典型案例:如果一个用户拥有两项服务:一项服务是图片在线存储服务A,另一个是图片在线打印服务B。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用户名各不相同,密码也各不相同。

    当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?

    法一:用户可能先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比较繁琐,效率低下;

    法二:用户将在服务A上注册的用户名与密码提供给服务B,服务B使用用户的帐号再去服务A处下载待打印的图片,这种方式效率是提高了,但是安全性大大降低了,服务B可以使用用户的用户名与密码去服务A上查看甚至篡改用户的资源。

    很多公司和个人都尝试解决这类问题,包括Google、Yahoo、Microsoft,这也促使OAUTH项目组的产生。OAuth是由Blaine Cook、Chris Messina、Larry Halff 及David Recordon共同发起的,目的在于为API访问授权提供一个开放的标准。OAuth规范的1.0版于2007年12月4日发布。

    OAUTH相关术语

    在弄清楚OAUTH流程之前,我们先了解下OAUTH的一些术语的定义:

       OAUTH相关的三个URL:

    Request Token URL: 获取未授权的Request Token服务地址;

    User Authorization URL: 获取用户授权的Request Token服务地址;

    Access Token URL: 用授权的Request Token换取Access Token的服务地址;

     

       OAUTH相关的参数定义:

    oauth_consumer_key: 使用者的ID,OAUTH服务的直接使用者是开发者开发出来的应用。所以该参数值的获取一般是要去OAUTH服务提供商处注册一个应用,再获取该应用的oauth_consumer_key。如Yahoo该值的注册地址为:https://developer.ya hoo.c om/dashboard/

    oauth_consumer_secret:oauth_consumer_key对应的密钥。

    oauth_signature_method: 请求串的签名方法,应用每次向OAUTH三个服务地址发送请求时,必须对请求进行签名。签名的方法有:HMAC-SHA1、RSA-SHA1与PLAINTEXT等三种。

    oauth_signature: 用上面的签名方法对请求的签名。

    oauth_timestamp: 发起请求的时间戳,其值是距1970 00:00:00 GMT的秒数,必须是大于0的整数。本次请求的时间戳必须大于或者等于上次的时间戳。

    oauth_nonce: 随机生成的字符串,用于防止请求的重放,防止外界的非法攻击。

    oauth_version: OAUTH的版本号,可选,其值必须为1.0。

     

    OAUTH HTTP响应代码:

       HTTP 400 Bad Request 请求错误

    Unsupported parameter 参数错误

    Unsupported signature method 签名方法错误

    Missing required parameter 参数丢失

    Duplicated OAuth Protocol Parameter 参数重复

    HTTP 401 Unauthorized 未授权

    Invalid Consumer Key 非法key

    Invalid / expired Token 失效或者非法的token

    Invalid signature 签名非法

    Invalid / used nonce 非法的nonce

     

    OAUTH认证授权流程

    在弄清楚了OAUTH的术语后,我们可以对OAUTH认证授权的流程进行初步认识。其实,简单的来说,  OAUTH认证授权就三个步骤,三句话可以概括:  1. 获取未授权的Request Token  2. 获取用户授权的Request Token  3. 用授权的Request Token换取Access Token

      当应用拿到Access Token后,就可以有权访问用户授权的资源了。大家肯能看出来了,这三个步骤不就是对应OAUTH的三个URL服务地址嘛。一点没错,上面的三个步骤中,每个步骤分别请求一个URL,并且收到相关信息,并且拿到上步的相关信息去请求接下来的URL直到拿到Access Token。

     

    具体每步执行信息如下:  A. 使用者(第三方软件)向OAUTH服务提供商请求未授权的Request Token。向Request Token URL发起请求,请求需要带上的参数见上图。  B. OAUTH服务提供商同意使用者的请求,并向其颁发未经用户授权的oauth_token与对应的oauth_token_secret,并返回给使用者。  C. 使用者向OAUTH服务提供商请求用户授权的Request Token。向User Authorization URL发起请求,请求带上上步拿到的未授权的token与其密钥。  D. OAUTH服务提供商将引导用户授权。该过程可能会提示用户,你想将哪些受保护的资源授权给该应用。此步可能会返回授权的Request Token也可能不返回。如Yahoo OAUTH就不会返回任何信息给使用者。  E. Request Token 授权后,使用者将向Access Token URL发起请求,将上步授权的Request Token换取成Access Token。请求的参数见上图,这个比第一步A多了一个参数就是Request Token。  F. OAUTH服务提供商同意使用者的请求,并向其颁发Access Token与对应的密钥,并返回给使用者。

      G. 使用者以后就可以使用上步返回的Access Token访问用户授权的资源。

     

    从上面的步骤可以看出,用户始终没有将其用户名与密码等信息提供给使用者(第三方软件),从而更安全。用OAUTH实现背景一节中的典型案例:当服务B(打印服务)要访问用户的服务A(图片服务)时,通过OAUTH机制,服务B向服务A请求未经用户授权的Request Token后,服务A将引导用户在服务A的网站上登录,并询问用户是否将图片服务授权给服务B。用户同意后,服务B就可以访问用户在服务A上的图片服务。整个过程服务B没有触及到用户在服务A的帐号信息。


    展开全文
  • oAuth

    千次阅读 2014-10-14 22:38:17
    这里说的oAuth是指oAuth2。

    这里说的oAuth是指oAuth2。

    oAuth是一种第三方的认证方式。

    比如说,我想访问A网,需要认证:


    第一步:授权

    1、于是A网将我转到提供认证服务的B网(其实,常见的是我选择了一家可认证的网站,比如新浪微博,腾讯QQ,人人,等等);

    2、登陆B网后,B网会询问我,允许A网得到我哪些授权?比如说,可以访问我的头像信息,邮箱信息,手机号码。我选择或确认之后,B网就会生成一个唯一的授权码Auth Code等通知A网;


    第二步:获取访问令牌和身份ID

    3、A网获得授权码Auth Code后,接着向B网请求访问令牌(Access Token)

    4、B向A发送访问令牌(Access Token)

    5、A收到后,又向B请求OpenID,也就是询问我是谁,即获取我的身份ID;

    6、B又将我的OpenID(身份ID)发给A。


    第三步:凭访问令牌和身份ID,A调用B提供的API,,获得了我的授权和身份信息


    如此完成了一次验证过程,我最终得以进入A网。



    在使用过程中,只要我保持活动,A网会在超时前及时刷新,从而维持我的登录状态。

    这个就是oAuth2。

    在此之前,有oAuth1.0,跟oAuth2的区别是,在发现需要认证的时候,是A主动先去询问B,然后再引导用户去B授权;再有就是2.0有多种获取访问令牌的方式,等等。总的来说,2.0比1.0简单,但两者不兼容。


    参考资料:

    http://www.coin163.com/doc/oauth.html

    http://www.cnblogs.com/artech/p/oauth-03.html

    展开全文
  • oauth-源码

    2021-03-19 12:20:26
    oauth
  • oauth:nim的OAuth
  • oauth:oauth2项目-源码

    2021-03-31 23:47:39
    oauth:oauth2项目
  • 包含 1.Getting Started with OAuth 2.0.pdf 2.Mastering OAuth 2.0.pdf 3.Oauth2 in Action.pdf 4.OAuth2.0 Cookbook.pdf
  • golang实现OAuth2授权码方式
  • magento-oauth 使用库的Magento OAuth服务类。 0.0目录 例子 变更日志 故障排除 1.0范例 在仓库的examples /目录中可以找到一个有效的例子。 您可以创建自己的Magento服务实例,也可以使用Lusitanian OAuth库中的...
  • OAuth.Framework:OAuth框架
  • OAuth:OAuth 1 PHP 库-源码

    2021-07-08 23:38:12
    #OAuth 1 PHP 库 基于OAuth
  • httpie-oauth:HTTPie的OAuth插件
  • oauth2:Elixir OAuth 2.0客户端库
  • mina-oauth:MINA OAuth-源码

    2021-05-03 06:51:50
    mina-oauth 微信小程序OAuth接口 功能列表 OAuth授权 获取基本信息 Installation $ npm install mina-oauth (yarn add mina-oauth) Usage 初始化 引入OAuth并实例化 const OAuth = require('mina-oauth'); const ...
  • OAuth2orizeRecipes 基于OAuth2安全配方和示例。 来自的express2示例是Node.js中出色而简单的最小OAuth2服务器。 这是一个示例,您可以用来了解如何在Node.js中编写自己的OAuth2服务器。 这里的食谱是从中构建的,...
  • oauth2.0:oauth2.0-源码

    2021-06-09 18:25:44
    oauth2.0 Java 中的 OAuth2.0 实现。 它使用 apache-oltu 和 jersey 插件。 代码是用Java开发的
  • musixmatch-oauth Musixmatch Oauth 示例
  • oauth2:转到OAuth2-源码

    2021-02-04 06:36:51
    适用于Go的OAuth2 oauth2软件包包含OAuth 2.0规范的客户端实现。 安装 go get golang.org/x/oauth2 或者,您可以手动将存储库git克隆到$(go env GOPATH)/src/golang.org/x/oauth2 。 有关更多文档和示例,请参见...
  • oAuth连接测试 测试oAuth连接
  • 易于使用的OAuth1和OAuth2帮助程序库。 支持所有授权类型。 授权码授予 隐性补助金 资源所有者密码凭证授予 客户证书授予 TODO:刷新访问令牌 您只需调用启动OAuth的方法即可获得令牌。 该库是轻量级的,因为它仅...
  • slince oauth2.0 library oauth是对oAuth2.0协议的封装支持,如果您对oAuth2.0不了解的话,可以参考;通过oauth您可以方便的获取登录用户的信息以及服务商提供的其它资料和服务; ##目前支持的服务 baidu weibo qq ...
  • 微信OAuth登录SDK Installation Composer (推荐) 把下面的配置加入你的composer.json文件 "henter/wechat-oauth": "dev-master" 然后使用来安装SDK composer install 如果故障或者不可用导致无法安装SDK的,可以使用...
  • oauth-server:Spring启动oauth
  • oauth2:Spring安全oauth2
  • java oauth

    2018-01-22 09:50:36
    java oauth2.0 认证服务,服务端示例代码,可以直接进性使用。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 102,112
精华内容 40,844
关键字:

oauth