gpt4 book ai didi

jwt token Multi-Tenancy

转载 作者:行者123 更新时间:2023-12-02 07:40:09 25 4
gpt4 key购买 nike

我在 ASP.NET Core 项目中通过 token 实现了 Web API 用户授权。我在每次登录时创建一个 token ,一切似乎都正常。

我的问题是该应用程序将是 Multi-Tenancy 的,因此我将在客户端有许多子域,例如(client1.myapp.com、client2.myapp.com、client3.myapp.com)

管理蜜蜂的服务器端应用程序将接受一个参数,该参数将是租户的名称。

一些例子:

apimyapp.com/client1/api/generateToken

apimyapp.com/client2/api/generateToken

apimyapp.com/client3/api/generateToken

现在,如果我从 client1 创建 token 并进行调用 apimyapp.com/client2/api/users (在 header 中插入由 client1 生成的 token ,但调用是针对 client2 进行的),则 token 将得到验证并且调用获得授权。

相反,我希望 token 仅对生成它的租户有效。

在我的startup.cs中:

 app.UseJwtBearerAuthentication(new JwtBearerOptions()
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = new TokenValidationParameters()
{
ValidIssuer = _config["Tokens:Issuer"],
ValidAudience = _config["Tokens:Audience"],
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"])),
ValidateLifetime = true
}
});

在我的 Controller 中生成 token :

    var userClaims =  _userManagerRepository.GetClaims(user);

var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
new Claim(JwtRegisteredClaimNames.GivenName, user.UserName),
new Claim(JwtRegisteredClaimNames.FamilyName, user.UserName),
new Claim(JwtRegisteredClaimNames.Email, user.Email)
}.Union(userClaims);

var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_config["Tokens:Key"]));
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

var token = new JwtSecurityToken(
issuer: _config["Tokens:Issuer"],
audience: _config["Tokens:Audience"],
claims: claims,
expires: DateTime.UtcNow.AddMinutes(90),
signingCredentials: creds
);

最佳答案

您可以将 key 、受众等列表添加到 TokenValidationParameters

  ValidAudiences = new List<string> 
{
"AUDIENCE1",
"AUDIENCE2"
}

关于jwt token Multi-Tenancy ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43430282/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com