Skip to content

选择身份验证方式

数据墙DBW 支持三种身份验证方式,从最简单的匿名访问到标准的 JWT 验证。选择哪种取决于你的部署架构——服务放在哪里、前面有没有网关、谁来负责验证用户身份。

三种方式概览

方式适用场景身份信息来源
匿名访问服务位于可信网关之后,网关已完成身份验证无,所有请求视为匿名
JWT 验证需要引擎自身验证令牌,对接第三方身份系统JWT Bearer 令牌
平台身份验证部署在云平台(如 Azure App Service)上,平台注入身份信息平台注入的请求头
本地模拟开发测试环境,快速验证权限配置无,所有请求视为已认证

匿名访问(Unauthenticated

这是数据墙DBW 的默认配置。引擎本身不做身份验证,所有请求都被分配为 anonymousauthenticated 系统角色。

适用场景

  • 数据墙DBW 部署在反向代理(Nginx、Traefik)或 API 网关之后,网关已经完成了用户认证。
  • 内部系统之间调用,不面向终端用户。
  • 快速原型开发,暂时不需要身份验证。

配置方式

json
{
  "runtime": {
    "host": {
      "authentication": {
        "provider": "Unauthenticated"
      }
    }
  }
}

在这种模式下,可以通过 X-MS-API-ROLE 请求头指定用户角色(需网关注入)。

JWT 验证(Custom

引擎自行验证请求头 Authorization: Bearer <token> 中的 JWT 令牌,校验 issuer、audience 和签名。

适用场景

  • 对接第三方身份提供程序(Okta、Auth0、Keycloak 等)。
  • 前端或移动端直接调用数据墙DBW,不在网关后面。
  • 需要从 JWT 令牌的 roles 声明中提取用户角色。

配置方式

json
{
  "runtime": {
    "host": {
      "authentication": {
        "provider": "Custom",
        "jwt": {
          "issuer": "https://your-idp.example.com",
          "audience": "dab-api"
        }
      }
    }
  }
}

令牌验证通过后,引擎从 roles 声明中获取角色列表。客户端通过 X-MS-API-ROLE 头选择本次请求使用的角色。

平台身份验证(EasyAuth

当数据墙DBW 部署在某些云平台上时,平台会在请求到达前完成用户认证,并将身份信息注入到请求头中(如 X-MS-CLIENT-PRINCIPAL)。引擎读取这些平台注入的头信息来识别用户身份,无需自行验证 JWT。

适用场景

  • 部署在 Azure App Service 等支持平台认证的服务上。
  • 平台已处理身份验证,引擎只需读取平台注入的身份信息。

配置方式

json
{
  "runtime": {
    "host": {
      "authentication": {
        "provider": "AppService"
      }
    }
  }
}

NOTE

平台身份验证依赖特定云平台注入的请求头,不适用于自托管环境。如果使用 Nginx、Traefik 等自建反向代理,应使用匿名访问模式,由网关自行注入身份信息。

本地模拟(Simulator

开发测试专用。引擎不验证任何令牌,所有请求自动视为已认证用户(authenticated 角色)。

适用场景

  • 本地开发时测试权限配置,不需要搭建完整的身份系统。
  • 配合 X-MS-API-ROLE 头模拟不同角色访问。

配置方式

json
{
  "runtime": {
    "host": {
      "authentication": {
        "provider": "Simulator"
      }
    }
  }
}

WARNING

Simulator 仅用于开发环境,不要在线上启用。

选择建议

你的部署架构推荐方式
服务在网关后面,网关负责认证匿名访问
直接对外暴露,需要自身验证令牌JWT 验证
对接 Okta / Auth0 / Keycloak 等JWT 验证
部署在 Azure App Service 等云平台平台身份验证
本地开发测试本地模拟
内网环境,不面向外部用户匿名访问

下一步

数据墙DBW 产品文档与开发指南。