使用 REST API Authentication 模块设置基本身份验证
基本身份验证是一种非常简单直接的身份验证方法。客户端发送带有 Authorization 头的 HTTP 请求,该头包含 Drupal 站点的 base64 编码用户名和密码。
在基本身份验证中,miniOrange API Authentication 模块会首先根据用户的 Drupal 用户名和密码进行身份验证。如果用户通过身份验证,则该用户才可以执行该操作。该模块兼容 Drupal 7、Drupal 8、Drupal 9、Drupal 10 和 Drupal 11。
设置视频:
先决条件:下载和安装:
- 下载并安装 Drupal REST & JSON API Authentication 模块。
- REST UI:该模块为你提供一个用于配置 REST 模块的用户界面。
- 在 Drupal 站点的扩展(/admin/modules)部分启用以下 Web 服务模块:
- JSON: API
- REST UI
- RESTful Web Services
- Serialization
在 Drupal 中配置基本身份验证方法的步骤:
- 为了更好地理解,我们将以使用 REST API 为 Drupal 获取节点时添加基本身份验证为例。
- 请注意,Drupal 的 /node/{node} API 用于检索有关 Drupal 节点的信息。
启用 API,分配方法和操作如下:
- 第一步是启用 API,并分配该 API 上允许的方法和操作。这可以使用 REST UI 模块完成,或者你可以直接修改配置。
- 要使用 REST UI 模块启用 API,请点击 REST UI 模块的配置按钮(如下所示)
- 考虑到我们的示例,我们希望启用 /node/{node} API,它位于 Content 部分。使用前面的 Enable 选项启用此 API。
- 现在,因为我们的目标是检索节点信息,请选择以下配置:
- 方法:GET
- 格式:json
- 身份验证提供程序:rest_api_authentication.
- 这将允许 miniOrange REST API Authentication 模块验证你的 API。点击 保存配置 按钮以继续。
启用基本身份验证的步骤:
- 在此步骤中,我们将设置 基本身份验证 作为 API Authentication 方法。为此,请导航到 REST API Authentication 模块的 API Authentication 选项卡 (/admin/config/people/rest_api_authentication/auth_settings)
- 选择 启用身份验证 复选框,然后点击 保存 设置。
- 在 保存设置 按钮下方选择 Basic Authentication,然后点击 选择方法 按钮。
就是这样!!!
现在让我们尝试通过使用基本身份验证的 API 调用来获取节点信息。
示例:
- 要在 Drupal 中获取节点信息,你需要发出一个 GET 请求,并附带用户的 Drupal 用户名和密码。用户名和密码的值必须是 base64 编码格式。你可以参考以下格式来发起调用。
请求: GET <your_drupal_base_url> /node/{node}?_format=json
请求头:
Authorization: Basic base64encoded <username:password>
Accept: application/json
Content-Type: application/jsonCURL 请求格式-
curl --location --request GET 'drupal_base_url/node/1?_format=json' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Basic base64encoded <username:password'>
- 你还可以参考下面添加的 Postman 请求示例图像:
- 成功的响应会返回你创建的节点信息。(请参考下图)
- 如果你收到任何错误响应,可以参考下表中的错误描述和可能的解决方案。
错误 |
描述 |
MISSING_AUTHORIZATION_HEADER |
当你在 API 请求中未发送 Authorization 头,或由于某些原因被服务器删除时,你将收到此错误。 示例: |
INVALID_AUTHORIZATION_HEADER_TOKEN_TYPE |
当你发送 Authorization 头但不是有效格式时,你将收到此错误。 |
USER_NAME_MISSING |
当模块无法在 API 调用中找到用户名时,你将收到此错误。 示例: |
INVALID_CREDENTIALS |
当用户名或密码不正确时,你将收到此错误。 示例: |