Skip to content
bitzorcas
EN

Concept

委托(模拟登录)

操作员模拟 — DelegationTokenService 用于生成模拟授权,DelegationTokenMiddleware 用于验证,SqlSugar 支持的授权存储。

Last updated

BitzOrcas 通过 Delegation 子系统支持操作员模拟。授权操作员可以临时代表另一个用户操作——用于客户支持和管理工作。

架构

操作员(管理员)→ DelegationTokenService → 生成令牌
目标用户 ←──── DelegationTokenMiddleware ←──────┘
请求以目标用户身份执行
审计跟踪:operator_id + target_user_id

组件

组件用途
DelegationTokenService生成和验证模拟令牌
DelegationTokenMiddleware拦截和验证委托令牌
IDelegationGrantRepositorySqlSugar 支持的授权存储
DelegationGrantEntity授权记录(操作员、目标、TTL、范围)
ICurrentUserAccessor.BeginScope()后台任务的运行身份份上下文

委托授权实体

public class DelegationGrantEntity : EntityBase
{
public string OperatorId { get; set; }
public string TargetUserId { get; set; }
public string TenantId { get; set; }
public DateTimeOffset ExpiresAt { get; set; }
public string? Scope { get; set; }
public bool IsRevoked { get; set; }
}

令牌生命周期

  1. 授权创建:操作员请求模拟目标用户
  2. 令牌生成DelegationTokenService 创建限时令牌
  3. 令牌验证DelegationTokenMiddleware 在每个请求中验证令牌
  4. 上下文注入ICurrentUser 反映目标用户身份
  5. 审计:所有操作记录操作员和目标用户
  6. 过期:令牌在 TTL 后自动过期

中间件位置

ExceptionHandler → CorrelationId → Authentication → DelegationToken
→ TenantResolution → Audit → Authorization → RateLimiter → Endpoints

委托验证发生在认证之后租户解析之前——操作员必须先通过认证。

安全考量

  • 授权有可配置 TTL(默认 1 小时)
  • 授权可立即撤销
  • 范围限制操作员可执行的操作
  • 所有模拟操作被审计
  • 仅具有 delegation.grant 权限的操作员可创建授权

当前限制

  • EF Core 路径尚不支持委托(仅 SqlSugar)
  • 后台任务模拟使用 BeginScope 而非中间件

另见