logo

Extra Block Types (EBT) - New Layout Builder experience❗

Extra Block Types (EBT) - styled, customizable block types: Slideshows, Tabs, Cards, Accordions and many others. Built-in settings for background, DOM Box, javascript plugins. Experience the future of layout building today.

Demo EBT modules Download EBT modules

❗Extra Paragraph Types (EPT) - New Paragraphs experience

Extra Paragraph Types (EPT) - analogical paragraph based set of modules.

Demo EPT modules Download EPT modules

Scroll

认证、安全与性能

06/09/2025, by Ivan

Drupal JSON:API 模块提供了一种强大的方式将您的内容作为 API 暴露出来,但选择正确的认证方法对于安全性和可用性至关重要。本文回顾了在使用 Drupal 的 JSON 模块时可用的各种认证选项。

核心认证方法

Drupal REST & JSON API Authentication 模块 使用不同的认证方式限制和保护对您的 Drupal 网站 API 的未授权访问,包括:

该模块还允许您在 Headless/解耦 Drupal 设置中验证 API 调用。

  1. 基本认证(Basic Authentication)
  2. 基于 API Key 的认证
  3. 基于访问令牌/OAuth 的认证
  4. 基于 JWT 令牌的认证
  5. 第三方提供商令牌认证

基于 Cookie 的认证

Drupal 的默认认证方式使用会话 Cookie。当用户通过 Drupal 的登录表单登录时,会创建一个会话 Cookie,可用于验证 JSON

请求。

优点:

  • 对基于浏览器的应用程序实现简单
  • 使用 Drupal 现有的认证系统
  • 适用于托管在同一域上的 JavaScript 应用程序

限制:

  • 在没有额外配置的情况下不适用于跨域请求
  • 对移动应用或第三方集成不太理想
  • 会话管理开销

基本认证(Basic Authentication)

基本认证涉及在每个请求的 Authorization 头中发送凭据(用户名和密码)。

优点:

  • 实现简单
  • 在 HTTP 客户端中广泛支持

限制:

  • 每个请求都会发送凭据
  • 仅在 HTTPS 下安全
  • 没有内置的令牌过期机制

贡献的认证模块

Simple OAuth (OAuth 2.0)

Simple OAuth 为 Drupal 的 API 认证实现了 OAuth 2.0 协议。

优点:

  • 安全的基于令牌的认证
  • 支持刷新令牌
  • 细粒度的权限范围
  • 非常适合第三方集成
  • 被广泛采用的标准

限制:

  • 与基本认证相比设置更复杂
  • 需要对 OAuth 2.0 流程有正确的理解

JWT (JSON Web Token)

JWT 模块允许使用 JSON Web Tokens 进行认证。

优点:

  • 无状态认证
  • 减少验证时的数据库查询
  • 可在令牌中包含声明/元数据
  • 在大规模下具有良好的性能

限制:

  • 需要正确的密钥管理
  • 若实现不当存在安全隐患
  • 没有内置的令牌撤销机制(需要额外措施)

Key Auth

Key Auth 为 Drupal 提供了 API Key 认证。

优点:

  • 简单的 API Key 方式
  • 适用于机器与机器之间的通信
  • 所需配置最少

限制:

  • 对于以用户为中心的应用程序来说不如 OAuth 安全
  • 撤销选项有限
  • 没有刷新令牌机制

Consumer Auth

Consumer Auth 扩展了 Drupal API 系统中 Consumer 实体的功能。

优点:

  • 与 Drupal 的 consumer 系统集成
  • 灵活的基于 consumer 的权限
  • 可补充其他认证方法

限制:

  • 需要与其他认证方法一起使用
  • 不是独立的解决方案

选择认证方法时的考虑因素

在为您的 JSON 选择认证方法时,请考虑:

  1. 安全性要求:您的数据有多敏感?
  2. 客户端类型:基于浏览器、移动应用还是服务器到服务器?
  3. 用户体验:用户是否需要频繁登录?
  4. 性能需求:认证速度有多重要?
  5. 集成需求:第三方服务是否会访问您的 API?

最佳实践

  • 始终在任何认证方法中使用 HTTPS
  • 为基于浏览器的应用程序实现适当的 CORS 头
  • 仔细考虑令牌过期策略
  • 在适当情况下使用刷新令牌
  • 实施速率限制以防止暴力破解攻击
  • 记录认证尝试以进行安全监控