关于OAuth 2.0的理解与应用


摘要:OAuth2.0是一种授权机制,主要核心就是向第三方应用颁发令牌。通过引入授权层并将客户端的角色与资源所有者的角色分开来解决传统客户端与服务器身份验证模型中存在的问题与局限性。
关键字:OAuth2.0、授权方式、授权码、应用
下面我从以下几个主要的方面来展现我对OAuth2.0的认识:

一、 定义理解

关于OAuth2.0的很多专业术语都很难读懂,但可以从实际生活中的例子来展现OAuth2.0的原理。比如,快递员要给某个小区的客户送快递,但由于小区的门禁需要身份验证才能进入。而客户也不能将密码直接告诉快递员,避免权限的滥用以及密码的泄露。此时需要一套授权机制来解决这个问题:首先,快递员需要通过门禁系统的相关设置向客户发送获取授权进入的信息;其次,客户接收到信息后能够查看快递员的相关信息以便确认身份,确认身份后选择同意授权。然后,门禁系统收到确认消息后,会生成令牌(一串类似于密码的数字等),快递员可凭借输入令牌进入小区。当然,令牌有效期可用通过客户自行设置,一般令牌有效期时间都比较短。
这样就良好地解决了此问题,避免了密码的泄露,也对权限起到了一定的保护,更重要地是达到了便利解决问题的效果。OAuth2.0机制的工作原理也是这样,通过简单的原理机制实现了完美的效果,达到了安全的要求与开放的目的。在大量的web网站和手机app中都存在此中授权机制,数据的所有者同意第三方应用访问系统数据,系统会生成短期令牌供第三方应用进入系统使用。比如手机常见的第三方应用询问是否访问联系人、好友等弹窗信息。

二、 四种授权方式个人理解

为了保证安全性以及权限的相关管理,针对不同的情况制定了不同的授权方式。同时这些授权方式在实现的过程中都比较简单可实行。
(1) 授权码
授权码方式主要针对有后端的web应用,前后端分离,能够对令牌进行相应的保护,能够有效抵御网络中的各种攻击手段,达到安全的目的。
其工作流程是第三方必须先向访问网站申请授权码,访问网站会询问用户是否同意授权给第三方网站,若同意则返回授权码。第三方网站拿到授权码后就可以在后端通过传递授权码等参数再次向系统网站后端获取令牌,系统网站后端通过第三方发送的参数信息验证其身份并颁发令牌。此时第三方网站就可以通过令牌访问系统网站数据了。同时如果令牌有效期快到了,用户可以在到期前发送一次refresh token请求,更新令牌。
这种工作方式既简单有安全,他们之间的信息传递url传递参数,最后一次返回令牌通过返回json数据来传递。授权码通过前端传送,令牌则存储在后端。此种授权方式在实际应用中使用比较多。
工作模式图:
在这里插入图片描述

(2) 隐藏式
隐藏式授权方式针对部分网站不存在后端,只要前端界面。则令牌必须存储在前段,这也增加了一定的风险。
工作流程:用户访问第三方网站,跳转访问其他网站数据。用户登录其他网站同意授权后向第三方网站发送访问令牌,直接通过前端传输保存。其中返回的过程中令牌的位置在URL的锚点,而不是查询字段,这也在一定程度上有效的防范了常见的web攻击手段,减少了令牌被泄露的风险。
此种方式不是很安全,一般令牌的有效期非常短,在会话结束后即令牌过期。
工作模式图:
在这里插入图片描述

(3) 密码式
此种授权情况一般针对用户高度信任的第三方应用,用户直接给与密码以便于该应用直接向其需要访问数据的目标网站访问令牌。个人认为,虽然这也是一种授权方式,但其安全程序不高。任何可信任的第三方网站都存在被攻击的可能,如果直接交付密码,可能会导致密码泄露等严重问题。其风险很大,一般只适用于其他授权方式无法使用的情况。
(4) 凭证式
此种方式直接通过命令行向需要访问数据的目标网站请求令牌,一般适用于没有前端的第三方应用。目标网站验证后直接返回令牌,其安全程度也不太高。
每种授权方式都存在其缺点,主要是针对不同的通信环境下选择不同授权方式,但是也有主次顺序,如果适用于授权码方式,会第一条件选择授权码方式,既能够达到其功能,又能够达到安全性要求。这些授权方式都是基于保护令牌,避免令牌被泄露而产生一系列的安全问题。令牌与密码非常类似,都是身份验证与授权的一种重要的工具,所以达到保密性的要求至关重要。

三、 OAuth2.0的应用

现在使用OAuth2.0的应用有很多,这种机制非常便于用户第三方应用访问其他网站数据。
(1) 移动应用使用微信登录
移动APP在使用OAuth2.0之前,需要在微信开放平台注册开发者帐号,并拥有一个已审核通过的移动应用,并获得相应的AppID和AppSecret。接下来就是授权流程:第三方应用APP发起微信授权登录请求,微信用户点击允许后,微信会拉起应用或重定向到第三方网站,并且带上授权临时票据code参数。通过code参数加上AppID和AppSecret等,通过API换取access_token;通过access_token进行接口调用,获取用户基本数据资源或帮助用户实现基本操作;
这样就能达到用户在第三方应用使用微信登录,获取相关信息,又能够通过一定的权限保护信息,防止被其他未授权应用截取。
(2) 网站需要获取其他网站信息
比如在网站中需要获取另一个网站的数据,这是就需要客户就需要通过身份验证登录目标网站,目标网站颁发令牌,第三方网站就可以访问此网站数据了。
(3) 应用设想
OAuth2.0机制通过其简易性、安全性、开放性等特点运用在生活中的众多领域。这种通过令牌授权的模式是否可以指定相应的权限,对数据进行读写或者删除等操作。其应用领域很广泛,任何软件开发商与服务商都可以使用这种便利且效果又好的授权方式,减少密码机制在授权中不必要的出现。

四、 总体体会

OAuth2.0机制是一种比较新型的协议,在授权方面起到了很大的作用。对大部分服务商、应用app、网站开放,协议比较简单,实现也比较容易,安全程度又高,能够达到较好的效果。同时也存在缺点,部分授权方式安全程度不高等,这都需要通过更好的机制来实现改进。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值