【发布时间】:2021-07-19 15:08:09
【问题描述】:
我被一个问题困住了,我不知道如何解决它。
我想向我的 API 添加两种不同的 JWT 授权方法。不要问我为什么,理由。
在我的 startup.cs 中我添加了
services.AddAuthentication()
.AddJwtBearer("firstJwt", options =>
{
options.Audience = "FirstProtectedApi";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("mySecret")),
ValidIssuer = "WebApiTest",
ValidateAudience = true,
ValidateLifetime = true,
ClockSkew = TimeSpan.FromMinutes(1)
};
})
.AddJwtBearer("secondJwt", options =>
{
options.Audience = "SecondProtectedApi";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuerSigningKey = true,
IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("mySecret")),
ValidIssuer = "WebApiTest",
ValidateAudience = true,
ValidateLifetime = true,
ClockSkew = TimeSpan.FromMinutes(1)
};
});
services
.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("FirstProtectedApi", "SecondProtectedApi")
.Build();
});
并且此代码应该工作。
我现在的问题是,在控制器中。 出于测试目的,我有两个不同的登录名。如何在登录时调用第一个或第二个身份验证方案,以便导航到仅适用于 FirstProtectedApi 或 SecondProtectedApi 的受保护路由?
即使是一些文档也会很棒!
非常感谢!
【问题讨论】:
标签: c# asp.net-core