zoukankan      html  css  js  c++  java
  • OAuth认证

    OAuth简介

    OAuth是在不提供用户名和密码的情况之下,授权第三方应用访问Web资源的安全协议。

    OAuth允许用户提供一个令牌给第三方网站,一个令牌对应一个特定的第三方网站,同时该令牌只能在特定的时间内访问特定的资源。

    比如在FB上想要导入MSN好友,在没有OAuth时,可能需要用户向FB提供MSN的用户名和密码。

    OAuth解决了这个信任问题。它使得用户不需要向FB提供MSN的用户名和密码的情况下,可以授权MSN将用户的好友名单提供给FB。

    OAuth中的角色:

    服务商(Server):用户使用服务的提供方,一般用来存消息、储照片、视频、联系人、文件等(比如Twitter、Sina等)。

    用  户(Resource Owner):服务商的用户

    消费方(Client):通常是网站,该网站想要访问用户存储在服务商那里的信息。

    上面例子里面,Client是FB,Server是MSN,Resource Owner是用户。

    另外一个实例:

    Jane在f.com上有两张照片,她想要将这两张照片分享到b.com,这个过程如何实现?

    Jane在b.com上选择要分享的两张照片.

    在b.com的后台会创建一个临时凭证,稍后Jane将持此凭证前往f.com.

    然后页面跳转到f.com的OAuth页面,并要求Jane登录。注意,这里是在f.com上登录。

    登录成功后,f.com会询问Jane是否授权b.com访问Jane在f.com里面的私有照片。

    如果Jane授权成功,f.com会将Jane带来的临时凭证标记为Jane已经授权,同时跳转回b.com,并带上临时凭证(Temporary Credentials),凭此,b.com知道它可以去获取Jane的照片了。

    对于b.com来说,它首先通过Request Token去f.com来换取Access Token,然后就可以用Access Token访问资源了。Request Token只能用于获取用户的授权,Access Token才能用于访问用户的资源。

    最终,Jane成功将照片从f.com分享到b.com上。

    一个通用的流程:

    1、用户访问Client网站,想对用户存放在Server的某些资源进行操作。

    2、Client网站向服务商请求一个临时Token。

    3、Server验证Client网站的身份后,授予一个临时Token。

    4、Client网站获得临时令牌后,将用户导向至Server的授权页面请求用户授权,然后这个过程中将临时Token和Client网站的返回地址发送给Server。

    5、用户在Server的授权页面上输入自己的用户名和密码,授权Client网站访问所相应的资源。

    6、授权成功后,Server将用户导向Client网站的返回地址。

    7、Client网站根据临时Token从Server那里获取访问Token。

    8、Server根据Token和用户的授权情况授予Client网站访问Token。

    9、Client网站使用获取到的访问Token访问存放在Server的对应的用户资源。

    流程图如下

     中小网站没有必要自己实现OAuth协议,可以使用一些比较成熟的库。具体的库可以查看:http://oauth.net/2/

    参考:《白帽子讲web安全》

  • 相关阅读:
    Dos常用命令收集
    build.xml
    ActionScript. 3.0著名开源库 大集合
    知识:ASP.NET ViewState
    分享:JavaScript表格排序控制
    分享:ViewState压缩方法
    分享:获取Castle.ActiveRecord中的Nhibernate Session
    分享:ASP.NET避免VIEWSTATE过大
    分享:扩展Include关联查询
    积累:收集常用sql
  • 原文地址:https://www.cnblogs.com/linda586586/p/5198470.html
Copyright © 2011-2022 走看看