Skip to content

匿名访问

Unauthenticated 提供程序告诉数据墙DBW 不要验证任何 JWT 令牌。所有请求都按 anonymous 系统角色处理。这是数据墙DBW 的默认认证方式。

适用场景

场景说明
网关后部署数据墙DBW 位于 Nginx、Traefik、API 网关等反向代理之后,网关已完成用户认证
内网服务服务仅在私有网络内部访问,不面向公网
快速原型本地开发阶段不想搭建身份系统,先跑通数据 API

不适用场景

场景原因
直接暴露公网任何人都可以无限制访问 API
需要角色区分所有请求都是 anonymous,无法区分不同用户
需要 claims 注入没有 JWT 令牌,数据库策略中的 @claims 引用无法工作

如果数据墙DBW 部署在网关之后,网关已完成认证,建议让网关将用户身份通过 X-MS-API-ROLE 头注入,这样可以结合网关的认证能力和数据墙DBW 的授权体系。

配置

bash
dab configure --runtime.host.authentication.provider Unauthenticated

生成的配置:

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

权限配置

因为所有请求都按 anonymous 角色评估,必须在每个实体的 permissions 中显式授予 anonymous 角色所需的操作:

json
{
  "Book": {
    "source": "dbo.Books",
    "permissions": [
      { "role": "anonymous", "actions": ["read"] }
    ]
  }
}

未配置 anonymous 的实体对所有请求返回 403。

网关注入角色

虽然引擎不验证令牌,但可以通过 X-MS-API-ROLE 请求头实现基本的角色切换——由网关在认证后注入该头。

nginx
# Nginx 示例:认证通过后注入角色头
location /api/ {
    proxy_set_header X-MS-API-ROLE $user_role;
    proxy_pass http://dab-api:5000;
}

这种方式在 Unauthenticated 模式下也可以实现角色区分,前提是网关能够可靠地识别用户并分配角色。

WARNING

确保数据墙DBW 服务端口不被外部直接访问——只允许网关的内网通信。如果外部可以直接访问服务端口,攻击者可以随意伪造 X-MS-API-ROLE 头。

下一步

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