滚动
设置基于访问令牌 / OAuth 的身份验证
OAuth(开放授权)是一种基于令牌的身份验证和授权协议的开放标准,可用于提供单点登录(SSO)。OAuth 允许第三方服务(例如 Facebook 等)在不暴露用户密码的情况下使用最终用户帐户的特定信息。它作为最终用户的中介,向服务提供一个访问令牌,从而授权共享特定的帐户信息。
此 Drupal API 身份验证方法使用 OAuth 2.0 协议获取安全访问令牌。该令牌用于验证对您的 Drupal 站点 API 的访问。OAuth 方法提供高度加密和安全的访问令牌,确保您的 Drupal API 得到良好保护。它被认为是防止对 Drupal REST 或 JSONAPI 端点未经授权访问的最安全方法之一。该模块兼容 Drupal 7、Drupal 8、Drupal 9、Drupal 10 和 Drupal 11。
设置视频:
在 OAuth 2.0 中,涉及以下三方:
- 用户:拥有通过 API 访问的数据,并希望允许应用程序访问这些数据。
- 应用程序:希望代表用户通过 API 访问数据。
- API 端点:控制并启用对用户数据的访问。
API 仅在收到来自应用程序的有效访问令牌时才授予访问权限。应用程序如何获取访问令牌取决于所使用的 OAuth 方案。
先决条件:下载和安装:
- 下载并安装 Drupal REST & JSON API Authentication 模块。
- REST UI:该模块为配置 REST 模块提供用户界面。
- 在 Drupal 站点的扩展部分(/admin/modules)启用以下 Web 服务模块:
- JSON: API
- REST UI
- RESTful Web Services
- Serialization
配置 OAuth/访问令牌 API 身份验证的步骤:
- 为了更好地理解,我们将以向 Drupal 的获取用户信息 API 添加 OAuth/访问令牌身份验证为例。
- 请注意,Drupal 的获取用户信息 API 用于检索用户信息。
启用 API 并分配方法和操作如下:
- 第一步是启用 API,并分配该 API 上允许的方法和操作。您可以使用 REST UI 模块进行此操作,也可以直接修改配置。
- 要使用 REST UI 模块启用 API,请点击 REST UI 模块的 Configure 按钮(如下图所示)。
- 根据我们的示例,我们希望启用 /user/{user} API,该 API 位于 Content 部分。使用其前面的 Enable 选项启用此 API。
- 现在,由于我们的目标是检索用户信息,请选择以下配置:
- 方法:GET
- 格式:json
- 身份验证提供者:rest_api_authentication
- 这将允许 miniOrange REST API Authentication 模块验证您的 API。点击 保存配置 按钮继续。
设置 OAuth/访问令牌 API 身份验证:
- 在此步骤中,我们将设置 OAuth/访问令牌作为 API 身份验证方法。请转到 REST API Authentication 模块的 API Authentication 选项卡 (/admin/config/people/rest_api_authentication/auth_settings)
- 选择 启用身份验证 复选框并点击 保存设置 按钮。
- 在保存按钮下方选择 OAuth/Access Token 单选按钮。
- 现在点击 生成新的客户端 ID 和密钥 按钮。
- 请妥善保存 Client ID 和 Secret,因为在之后验证 Get User Info API 时将会用到。
授予 Drupal 角色查看用户信息的权限:
- 如有需要,您也可以授予非管理员的 Drupal 角色查看用户信息的权限。您可以在 Drupal 站点的权限部分 (/admin/people/permissions) 中将 Drupal 角色分配给 查看用户信息 权限。
就是这样!!!
现在,让我们尝试通过 API 调用使用 OAuth/Access Token 进行身份验证来获取用户信息。
示例:
- 首先,我们需要进行一次 API 调用以获取访问令牌。然后我们将使用该令牌来验证 Drupal API,从而获取用户信息。
- miniOrange API Authentication 模块支持两种授权类型,可用于获取访问令牌: