跟着互联网运用的开展,跨体系身份认证解决计划也在不断演化和改善。下面是它的开展史:

  1. 早期的 Web 运用程序运用基于表单的身份验证方法;

  2. 跟着 Web 运用程序数量的增加,需求跨运用程序身份验证的呼声也越来越高,然后呈现了最初的单点登录(SSO)解决计划;

  3. 跟着企业采用云核算模型,需求对跨组织或跨域名边界的运用进行身份验证。CAS和Shibboleth是两个受欢迎的开源单点登录协议;

  4. OAuth 是一种基于令牌的授权协议,能够经过第三方认证供给商进行身份验证和授权,最初被用于授权用户拜访第三方运用程序。

  5. 近年来,区块链技能也开始在跨体系身份认证计划中得到运用。这种技能能够让用户在维护隐私的一起安全地管理自己的数字身份,然后解决了传统身份认证计划中的危险问题。

让身份验证更简单:OAuth2基于令牌方式为第三方应用提供认证和授权方案

针对Web运用需求拜访第三方资源,但用户不希望将其用户名和暗码直接供给给这些运用。为此,OAuth 2.0 作为一种授权标准被广泛运用,本文将对 OAuth 2.0 进行介绍,并剖析其原理、运用场景以及常见的关键问题。

1、OAuth 2.0 简介

OAuth 2.0 是一个开放标准,答运用户经过授权方法拜访第三方运用程序。它经过令牌(token)授权方法,在不露出用户凭证的情况下授权给第三方运用程序拜访资源。OAuth 2.0 是 OAuth 协议的下一代版本,相比于 OAuth 1.0,愈加简略、易于运用,而且支撑多种授权流程。

2、OAuth 2.0 原理

OAuth 2.0 的中心是令牌授权机制。在 OAuth 2.0 中,当用户想要授权第三方运用程序时,它会向授权服务器发送一个授权恳求,该恳求包含了用户的身份信息(比方用户名和暗码)。假如授权成功,授权服务器会生成一个令牌,并将其发送给第三方运用程序。第三方运用程序能够运用该令牌来拜访受维护的资源,而无需再次向用户恳求凭证。

让身份验证更简单:OAuth2基于令牌方式为第三方应用提供认证和授权方案

OAuth 2.0 支撑多种授权流程,包含:

  1. 授权码形式(Authorization Code Grant):运用最广泛的一种授权方法,当用户点击“赞同授权”时会跳转到授权服务器进行授权,授权成功后回来一个授权码给客户端,客户端再经过授权码向授权服务器恳求获取 Access Token。
  2. 简化形式(Implicit Grant):适用于客户端是 Web 运用程序,直接在浏览器中获取 Access Token,不需求经过授权码获取 Access Token
  3. 客户端形式(Client Credentials Grant):适用于客户端需求拜访自己的资源而不是用户的资源,客户端向授权服务器提交自己的身份信息获取 Access Token。
  4. 暗码形式(Password Credentials Grant):适用于客户端与资源服务器之间有高度信赖关系,比方客户端和资源服务器都受同一家公司管理,客户端能够直接向授权服务器恳求 Access Token,此时需求供给自己的用户名和暗码。

2.1、授权码形式

让身份验证更简单:OAuth2基于令牌方式为第三方应用提供认证和授权方案

角色能够分为:

  • 事务体系(知乎、百度、王者荣耀)
  • 前端(事务体系前端)
  • 后台(事务体系后台)
  • 认证服务(微信、QQ等第三方)

OAuth 2.0 授权码形式是一种常见的身份验证和授权流程,一般用于客户端能够安全维护其凭证的情况下,例如 Web 运用程序。下面是 OAuth 2.0 授权码形式的认证全过程:

  1. 事务体系前端将用户重定向到认证服务器以恳求授权。重定向时,事务体系需求供给一个重定向 URL 。
  2. 用户在认证服务中输入其凭证信息进行身份验证。
  3. 认证服务承认用户的身份后,会向用户问询是否赞同授权给事务体系拜访受维护的资源。
  4. 假如用户赞同授权,则认证服务器将生成一个授权码,并将其作为响应发送回事务体系的重定向 URL 中(URL便是事务体系后台的接口地址)。一起,也会顺便之前的状况码code以供客户端进行匹配,以保证恳求的完整性和牢靠性。
  5. 事务体系后台经过 POST 恳求向认证服务器交换授权码code以获取拜访令牌access_token。在恳求中,事务体系后台有必要供给自己的身份验证凭证、授权代码和重定向 URI。
  6. 认证服务器收到恳求后,会验证事务体系的身份验证凭证和授权代码的有用性。假如验证成功,则颁布拜访令牌给事务体系。
  7. 事务体系运用拜访令牌来恳求受维护的资源,以进行所需的操作。

2.2、简化形式

OAuth 2.0 简化形式是一种常见的身份验证和授权流程,一般用于无法安全维护其凭证的客户端运用程序,例如 JavaScript 运用程序。下面是 OAuth 2.0 简化形式认证全过程:

  1. 客户端将用户重定向到认证服务器以恳求授权。重定向时,客户端需求供给一个重定向 URI 和一个随机生成的状况码,以防止跨站点攻击。

  2. 用户在认证服务器上输入其凭证信息进行身份验证。

  3. 认证服务器承认用户的身份后,会向用户问询是否赞同授权给客户端拜访受维护的资源。

  4. 假如用户赞同授权,则认证服务器将生成一个拜访令牌,并将其直接回来给客户端的重定向 URI 中。一起也会顺便之前的状况码以供客户端进行匹配,以保证恳求的完整性和牢靠性。

  5. 客户端运用拜访令牌来恳求受维护的资源,以进行所需的操作。

能够看到简化形式省去了授权码形式中的回来code及经过code来获取access_token的步骤。而是授权经往后直接经过接口来获取access_token。

2.3、客户端形式

OAuth 2.0 客户端形式是一种常见的身份验证和授权流程,用于客户端运用程序需求直接拜访受维护资源而不触及用户的情况。下面是 OAuth 2.0 客户端形式的认证全过程:

  1. 客户端经过appid/appsecret向认证服务器恳求拜访令牌,并一起供给自己的身份验证凭证。
  2. 认证服务器查看客户端供给的凭证是否有用。假如凭证有用,则认证服务器会颁布一个拜访令牌给客户端。
  3. 客户端运用拜访令牌来恳求受维护的资源,以进行所需的操作。

需求留意的是,在 OAuth 2.0 客户端形式中,客户端经过身份验证凭证直接取得拜访令牌,而无需用户的身份验证和授权。因而,开发人员需求根据具体情况挑选最合适的授权方法,并采取恰当的安全措施来维护数据安全性。

2.4、暗码形式

OAuth 2.0 暗码形式是一种常见的身份验证和授权流程,一般用于由于安装了运用客户端或许用户信赖特定客户端,所以能够运用用户名和暗码直接恳求拜访令牌。下面是 OAuth 2.0 暗码形式认证全过程:

  1. 客户端运用用户的用户名和暗码向认证服务器恳求拜访令牌,并一起供给客户端自己的身份验证凭证。
  2. 认证服务器会对客户端身份验证凭证进行验证,并查看用户的用户名和暗码是否正确。假如验证成功,则认证服务器将颁布一个拜访令牌给客户端。
  3. 客户端运用拜访令牌来恳求受维护的资源,以进行所需的操作。

需求留意的是,在 OAuth 2.0 暗码形式中,客户端需求取得用户的用户名和暗码,这或许会导致安全问题。因而,开发人员在挑选运用 OAuth 2.0 暗码形式时,需求细心考虑其适用场景,并采取必要的安全措施来维护用户数据。一起,建议运用愈加安全的授权方法(例如授权码形式或简化形式)来避免潜在的安全危险。

3、OAuth 2.0 运用场景

OAuth 2.0 能够运用于各种 Web 运用程序,特别是移动运用程序和云核算服务。下面罗列几个 OAuth 2.0 的典型运用场景:

1.交际媒体运用程序:答运用户授权第三方运用程序拜访他们的交际媒体帐户信息无需新注册用户。比方,以微信或QQ账户授权登录某些网站。

2.在线商务平台:答应第三方运用程序运用用户的账户信息进行交易。比方支付宝授权登录。

3.移动运用程序:答应第三方运用程序拜访用户的联系人、方位和其他个人信息。

4.API开发人员:答应API开发人员运用OAuth2协议来授权第三方运用程序拜访其API。

4、OAuth 2.0 关键问题

1)安全性问题

虽然 OAuth 2.0 能够让用户授权第三方运用程序拜访资源,但它也或许导致安全性问题。例如,假如一个恶意的第三方运用程序拥有用户的令牌,那么它能够在未经授权的情况下拜访其它资源。

2)数据隐私问题

当用户授权第三方运用程序拜访资源时,该运用程序或许会搜集和存储用户的灵敏信息。因而,在挑选运用第三方运用程序之前,用户需求保证其数据不会被滥用或走漏。

3)认证服务器的可信性问题

认证服务器是 OAuth 2.0 的中心组件,它负责生成和验证令牌,因而有必要是牢靠的。假如认证服务器没有受到恰当的维护,那么攻击者或许会使用这个缝隙来获取用户的令牌。

4)授权流程的复杂性问题

OAuth 2.0 支撑多种授权流程,每一种流程都有自己的优缺点和适用范围。因而,开发人员需求根据具体情况挑选最合适的授权流程,并保证其安全性和可扩展性。

==========================================

假如文章对你有协助,请不要忘记加个重视、点个赞!