Skip to content
bitzorcas
EN

Concept

认证

三方案认证 — JWT Bearer 用于用户调用方,HMAC 用于应用调用方,API Key 配合 SHA-256 哈希存储,以及 PolicyScheme 转发。

Last updated

BitzOrcas 使用三方案认证模型,基于请求头自动转发。PolicySchemeMultiScheme)根据存在的头选择正确的处理器。

方案转发

请求到达
├── 有 X-Signature 头?→ HMAC 方案
├── 有 X-API-Key 头? → API Key 方案
└── 否则 → JWT Bearer 方案

JWT Bearer(用户调用方)

用于交互式用户认证:

参数来源验证
Jwt:Secret配置必填,≥ 32 字符
Jwt:Issuer配置必填,验证
Jwt:Audience配置必填,验证
ClockSkew硬编码TimeSpan.Zero(无容差)
{
"Jwt": {
"Secret": "your-secret-at-least-32-characters-long",
"Issuer": "bitzorcas-api",
"Audience": "bitzorcas-client"
}
}

JWT Claims

Claim描述
sub / user_id用户标识符
tenant_id租户标识符
roles分配的角色
exp过期时间(UTC)
iat签发时间(UTC)

HMAC(应用调用方)

用于服务器到服务器认证:

组件描述
X-Signature
算法HMAC-SHA256
凭据Hmac:Clients 配置
Nonce通过 INonceStore 防重放
失败关闭未注册客户端 → 401
{
"Hmac": {
"Clients": {
"service-a": "shared-secret-here",
"service-b": "another-secret"
}
}
}

HMAC 请求签名

  1. 客户端构造规范请求字符串
  2. 用共享密钥计算 HMAC-SHA256
  3. 发送 X-Signature: {timestamp}.{signature}
  4. 服务器验证签名和 nonce(防重放)

API Key(应用调用方)

用于服务集成的简单密钥认证:

组件描述
X-API-Key
存储仅 SHA-256 哈希(永不存储明文)
凭据格式prefix_descriptionprefix_identifier
{
"ApiKeys": {
"boa_integration-key": {
"KeyPrefix": "boa",
"TenantId": "100",
"Scopes": ["tickets.read", "tickets.write"]
}
}
}

开发测试夹具

仅在 Development 模式下,注入测试凭据:

  • HMACtest-client 密钥 test-secret
  • API Keyboa_test_integration-key 沙箱范围

另见