OAuth 2.0 原理介绍

最近在做对用户的认证及REST API的访问权限控制,需要用OAuth来实现第三方应用对我们API的访问控制。OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。OAuth在全世界得到广泛应用,目前版本是2.0版。本文对OAuth 2.0的应用场景、设计思路和运行流程做一个简明通俗的解释。
摘要由CSDN通过智能技术生成

最近在做对用户的认证及REST API的访问权限控制,需要用OAuth来实现第三方应用对我们API的访问控制。OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源(如照片,视频,联系人列表),而无需将用户名和密码提供给第三方应用。OAuth在全世界得到广泛应用,目前版本是2.0版。本文对OAuth 2.0的应用场景、设计思路和运行流程做一个简明通俗的解释。

应用场景

应用场景

上图是一个典型的应用场景,一个游戏应用希望读取用户Facebook账号的用户名和头像作为该用户在游戏中的角色信息,用户为了避免自己重新输入用户名并上传头像,必须让游戏应用读取自己Facebook账号的一些信息。但是只有得到用户授权,Facebook才会同意让游戏应用读取这些信息。如何让游戏应用获得用户授权呢?传统方法是用户把自己的Facebook账号用户名和密码告诉游戏应用,然后由游戏服务器代表用户登陆Facebook服务器获取用户的信息,但是这种方法存在一些严重的安全问题:

  1. 游戏应用为了后续的服务,会保存用户的密码,这样很不安全。
  2. Facebook需要部署直接密码登录,而单纯的密码登录并不安全。
  3. 游戏应用拥有获取用户储存在Facebook所有资料的权力,用户无法限制游戏应用获得授权的范围和有效期。
  4. 用户只有修改密码,才能收回赋予游戏应用的权力。但是这样做,会使得其他所有获得用户授权的第三方应用程序全部失效。
  5. 只要有一个第三方应用程序被破解,就会导致用户密码泄漏,以及所有被密码保护的数据泄漏。

如何保证第三方应用能够安全可控的访问用户资源,这就是Oauth要解决的问题。

OAuth的思路

OAuth在第三方应用与服务提供商之间设置了一个授权层。第三方应用不能直接登录服务提供商,只能登录授权层,以此将用户与客户端区分开来。第三方应用登录授权层所用的令牌,与用户的密码不同。用户可以在登录授权的时候,指定授权层令牌的权限范围和有效期。
第三方应用登录授权层以后,服务提供商根据令牌的权限范围和有效期,向第三方应用开放用户资源。

协议流程

OAuth 2.0的运行流程如下图:
协议流程

(A)用户打开客户端以后,客户端要求用户给予授权。
(B)用户同意给予客户端授权。
(C)客户端使用上一步获得的授权,向认证服务器申请令牌。
(D)认证服务器对客户端进行认证以后,确认无误,同意发放令牌。
(
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值