选择身份验证方式
数据墙DBW 支持三种身份验证方式,从最简单的匿名访问到标准的 JWT 验证。选择哪种取决于你的部署架构——服务放在哪里、前面有没有网关、谁来负责验证用户身份。
三种方式概览
| 方式 | 适用场景 | 身份信息来源 |
|---|---|---|
| 匿名访问 | 服务位于可信网关之后,网关已完成身份验证 | 无,所有请求视为匿名 |
| JWT 验证 | 需要引擎自身验证令牌,对接第三方身份系统 | JWT Bearer 令牌 |
| 平台身份验证 | 部署在云平台(如 Azure App Service)上,平台注入身份信息 | 平台注入的请求头 |
| 本地模拟 | 开发测试环境,快速验证权限配置 | 无,所有请求视为已认证 |
匿名访问(Unauthenticated)
这是数据墙DBW 的默认配置。引擎本身不做身份验证,所有请求都被分配为 anonymous 或 authenticated 系统角色。
适用场景:
- 数据墙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 等云平台 | 平台身份验证 |
| 本地开发测试 | 本地模拟 |
| 内网环境,不面向外部用户 | 匿名访问 |
