OAuth 浅析

OAuth 浅析

OAuth是什么?

维基给出的定义如下:
OAuth is an open standard for access delegation, commonly used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords.

直译就是:oauth是一个访问授权/委托的开发标准,解决如何安全的实现第三方应用授权访问用户信息的问题

OAuth应用场景

Amazon,Google, Facebook, Microsoft and Twitter 等国外企业,阿里、腾讯、百度等国内企业,他们一般会存储用户的大量信息,用户对他们也是“信任”的。

互联网时代,尤其是移动互联网时代,在大厂们的基础或平台上,各种第三方服务/应用层出不穷,可以给我们提供各种便利的、个性化的服务,满足人们的各种需求。

这就会带来一个信息共享的矛盾?
第三方服务变化日新月异,但一般都是一些小公司提供的,无法得到用户完全信任,用户不想将所有的信息与其共享。比如说提供照片美化编辑打印服务的一个第三方应用,而用户的照片等所有资料都存在百度网盘上,对于用户来说,照片是可以跟这个应用共享的,但是其它信息并不想也没有必要共享。
通过OAuth就可以解决这个问题,用户可以通过OAuth,仅给第三方应用授权/委托访问自己的照片信息。

OAuth示例

OAuth中一般有四个角色,
user:信息所有者
client:第三方应用
authentication/authorization service:鉴权服务
resource service:资源服务

示例:

  1. user使用client服务
  2. client 跳转到authentication/authorization service(例如百度网盘),service进行用户鉴权(例如输入用户名和密码)
  3. 鉴权通过后,authentication/authorization service 发送给client 一个token(这里可能有code、implicate等几种方式)
  4. client获得access token后,将token发给resource service,token验证通过后,resource service将指定信息共享给client

OAuth本质

OAuth中的“Auth”一般是指Authorizaiton,但是这样也不是很准确,看维基的解析,个人认为delegation还是比较准确的。

随着OAuth的普及,有一些场景将其用于authentication,这可能就属于滥用了,openid与OAuth的结合就可以解决这个问题。

目前微服务越来越普及,各个服务组件之间的delegation就非常适合用OAuth来解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值