You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 Identity端点中如何为Bearer令牌添加自定义TenantId声明

如何在.NET 8 Identity API的Bearer令牌中添加自定义TenantId属性

要将MyAppUser中的TenantId属性添加到登录端点返回的Bearer令牌中,只需通过自定义用户Claims生成逻辑即可实现,步骤如下:

1. 自定义用户Claims生成工厂

创建一个继承自UserClaimsPrincipalFactory<MyAppUser>的类,重写GenerateClaimsAsync方法,将TenantId添加到用户Claims集合中:

using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.Options;
using System.Security.Claims;

public class CustomUserClaimsPrincipalFactory : UserClaimsPrincipalFactory<MyAppUser>
{
    public CustomUserClaimsPrincipalFactory(UserManager<MyAppUser> userManager, 
        IOptions<IdentityOptions> optionsAccessor) 
        : base(userManager, optionsAccessor)
    {
    }

    protected override async Task<ClaimsIdentity> GenerateClaimsAsync(MyAppUser user)
    {
        // 先调用基类生成默认Claims
        var identity = await base.GenerateClaimsAsync(user);
        
        // 添加TenantId到Claims中,可根据需求自定义Claim类型
        if (user.TenantId != null)
        {
            identity.AddClaim(new Claim("TenantId", user.TenantId.ToString()));
            // 若需更规范的Claim类型,可使用自定义URI格式,例如:
            // identity.AddClaim(new Claim("https://your-app.com/claims/tenantid", user.TenantId.ToString()));
        }

        return identity;
    }
}

2. 注册自定义Claims工厂

在Identity服务注册时,替换默认的Claims生成工厂:

builder.Services.AddIdentityCore<MyAppUser>()
    .AddEntityFrameworkStores<AppDbContext>()
    .AddApiEndpoints()
    .AddClaimsPrincipalFactory<CustomUserClaimsPrincipalFactory>(); // 注册自定义工厂

3. 验证效果

完成配置后,调用登录端点(/login)获取Bearer令牌,解析令牌即可看到TenantId已被包含在Claims中。

补充说明

  • 默认情况下,.NET 8的Bearer令牌生成逻辑会自动包含用户所有的Claims,无需额外配置令牌过滤规则。
  • 若需对令牌内容做更精细控制(比如指定仅包含特定Claims),可在AddBearerToken时配置相关参数:
builder.Services.AddAuthentication()
    .AddBearerToken(IdentityConstants.BearerScheme, options =>
    {
        // 可选:自定义令牌有效期、加密算法等
        options.TokenValidationParameters.ValidIssuer = "your-app-issuer";
        options.TokenValidationParameters.ValidAudience = "your-app-audience";
    });

内容的提问来源于stack exchange,提问作者tt9

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 12:04:57