
什么是SQL注入?理解、风险与防范技巧
OAuth 2.0 是一个开放标准授权框架,允许不相关的服务安全地允许经过身份验证的访问其资产,而无需共享一些关键的中心凭证 – 即所有者的密码。
OAuth 的工作原理是授予访问数据的权限而不是提供身份证明,这意味着它是一种授权协议而不是身份验证协议。
用户授权透露哪些个人信息。OAuth 通过 HTTPS 工作,授权服务器、设备、API 和应用程序。它使用短期访问令牌而不是密码。
为了更好地理解 OAuth 的用途,您可以考虑一下经常被提及的代客泊车钥匙类比。如今,许多豪华汽车都配备了一把特殊钥匙,仅供停车场服务员使用。
与标准钥匙不同,“代客钥匙”可以启动汽车,但无法进入车辆的某些区域,如后备箱或手套箱。这种钥匙也无法让车辆行驶超过一小段距离 – 最高速度也受到限制。
OAuth 基于代客密钥原则,允许您(用户)向第三方网站授予对您的私人资源的有限访问权限,而无需共享您的身份或密码。
直到 2007 年底,API 访问指定才有了开放标准。要连接网站,您需要提供用户名和密码。到目前为止,一切顺利。但如果另一个网站参与其中(这种情况经常发生),第二个网站也需要它们。
把密码交给别人不仅麻烦而且危险。现在,你的密码落入坏人手中的几率已经翻倍了。
幸运的是,OAuth 1.0 和现在的 2.0 可以消除对所有密码的需求,并将这些网站限制为必要的功能。
从更实际的角度来看,除了上述单点登录示例之外,OAuth 还可以轻松完成一些操作,例如将手机上的图片和视频发布到社交媒体以及使用亚马逊账户支付在线购物费用,而无需输入信用卡信息。
每次您授予某个应用访问手机摄像头的权限或允许浏览器插件访问您的 Google 帐户时,您都会看到 OAuth 发挥作用。基本上,与 OAuth 相关的功能列表可以让我们的生活更加轻松,这是详尽无遗的。
如今,当开发人员提到 OAuth 时,他们指的是 OAuth 2.0。事实上,这两个版本相差太大,以至于不兼容。这两个程序可以单独运行,尽管这种情况越来越少见。
为了理解这些区别,了解一些澄清和历史可能会有所帮助。
2007 年末,OAuth 1.0 以基于数字签名的框架面世。它可靠、安全,并迅速被 Google 和 Twitter 等公司所接受。缺点是:OAuth 1.0 意味着加密实现和加密互操作性,这对许多开发人员来说是一个挑战。
2012 年 10 月发布的 OAuth 2.0 完全不同。此新版本不向后兼容 OAuth 1.0 或 1.1,并且加密不再是系统的一部分。
OAuth 2.0 版本依靠访问令牌来避免密码需求,从而使授权变得更容易、更灵活,并且站点和设备之间的互操作性更强。
OAuth 2.0 取代了其前身,成为许多公司的首选解决方案,包括 Facebook、Microsoft、Twitter、Google 和 Mozilla。
总结一下差异:
在讨论各个组件之前,让我们先看看当用户发起涉及另一个不相关网站或服务的网站操作时发生的事件顺序。假设用户已使用 HTTPS 登录到第一个网站。
关于 OAuth 2.0 工作原理的讨论很容易变得非常技术化。从高层次来看,基本构建块及其功能分为五个核心组件。
现在,让我们更详细地分解每个组件。
范围是一种定义权限并为应用程序或服务可以访问或不能访问的内容设置边界的机制。
当应用程序发送授权请求时,会向用户显示请求的具体范围,并且用户必须授权同意。
此同意作为授权证明并允许授予访问令牌。
OAuth 流程中出现四个参与者:
客户端可以是机密的,也可以是公开的。机密客户端顾名思义就是保守秘密。它们在安全区域运行,最终用户无法访问。
公共客户端是安全性较低的实体,例如浏览器、移动应用程序和物联网设备,而机密客户端则更安全,并且可以被授予更多对安全资源的访问权限。
OAuth 流中有两种类型的令牌参与者——访问令牌和刷新令牌。
当您终止刷新令牌时,您将获得一个新的、经过加密签名的访问令牌。
通常,这些令牌采用 JavaScript 对象表示法 (JSON) 格式,称为 JSON Web 令牌或 JWT(发音为“jots”)。JWT 允许数字签名(也称为声明),稍后可以使用秘密签名密钥进行验证。
令牌从授权服务器上的两个主要端点获取。第一个是授予用户同意和授权的“授权端点”。授权随后传递到“令牌端点”,在此处理授权并授予刷新令牌和访问令牌。
访问令牌是访问 API 的关键。但一旦过期,就需要使用刷新令牌再次前往令牌端点,重新执行所有操作。
流程是客户端访问请求的资源所需的一系列步骤和授权授予类型。
OAuth 2.0 包括六种流程,用于不同类型的交互。
尽管 OAuth 2.0 因保护私人数据而受到开发人员和最终用户的欢迎,但也有批评者。
一些人猛烈抨击 1.0 版和 2.0 版之间的重大变化,这并非毫无道理。OAuth 2.0 的安全性明显低于其前身,而且更为复杂。
OAuth2.0最大的诟病可能就是不直接支持客户端验证、签名、通道绑定。
批评者指责 OAuth 2.0 的创建者选择专注于提高网站和设备之间的互操作性,而不是提供额外的范围和安全性。
OAuth 建议使用第三方保护协议(例如传输层安全性(TLS)) 来提供附加功能。
虽然 OAuth 2.0 在安全使用私人数据方面向前迈了一步,但它远不足以防止您的 API 受到在OWASP API 安全性前 10 名列表中排名第一的对象级授权 (BOLA) 漏洞的侵害。
公司依靠自动化 API 安全测试平台全面测试其 API,以跟上不断发展的安全标准。