跳到主要内容
版本:0.3.x(Latest)

基本介绍

AuthService为插件提供租户认证Token的签发、切换和管理能力。它是多租户认证流程的核心服务,处理从登录到租户选择、租户切换、以及平台管理员模拟进入租户的全链路Token管理。

插件通过services.Auth()获取该服务。典型消费方是linapro-tenant-core插件,它实现了租户选择和切换的业务逻辑,通过AuthService完成Token的签发和撤销。

设计思路

AuthService采用两阶段认证模型

阶段一:登录产生PreToken。 用户通过用户名密码或其他方式完成身份验证后,主框架签发一个短生命周期的PreToken。此时用户尚未绑定到具体租户。

阶段二:选择租户签发TenantToken。 用户选择目标租户后,插件调用SelectTenantPreToken消费并签发绑定到该租户的TenantTokenTenantToken包含AccessTokenRefreshToken,后续请求使用TenantToken访问租户资源。

租户切换。 已认证用户需要切换到其他租户时,插件调用SwitchTenant。该方法校验用户在目标租户的成员关系,撤销当前Token并签发新的TenantToken

模拟令牌。 平台管理员可以模拟进入任意租户。IssueImpersonationToken签发一个标记为模拟的TokenRevokeImpersonationToken用于撤销模拟会话。模拟令牌的业务授权和审计检查由调用方插件负责,宿主只负责JWT签名、会话状态和权限缓存。

架构位置

AuthService在认证链路中处于Token管理层,位于身份验证和业务授权之间:

该服务与以下服务协作:

  • BizCtxServiceAuthService签发的Token信息最终投影到BizCtx中,供业务逻辑读取
  • SessionServiceToken签发和撤销会同步更新在线会话状态
  • TenantService:租户切换前需要校验用户在目标租户的可见性

主要能力

方法说明
SelectTenant消费PreToken,签发绑定到目标租户的TenantToken
SwitchTenant校验成员关系,撤销当前Token,签发新租户的TenantToken
IssueImpersonationToken为平台管理员签发模拟令牌,进入目标租户
RevokeImpersonationToken撤销模拟令牌,结束模拟会话

设计约束

  • 插件不直接签发JWT。 Token的签名、密钥管理和过期策略由宿主认证服务统一控制。插件通过AuthService申请签发,不接触签名细节。
  • 模拟令牌需要调用方审计。 IssueImpersonationToken只负责签发Token,插件在调用前必须自行完成业务授权检查和审计记录。
  • PreToken是一次性的。 SelectTenant消费PreToken后即失效,不能重复使用。
  • 租户切换会撤销旧Token SwitchTenant执行后,原Token立即失效,客户端需要使用新签发的Token

相关服务