Authentication .net core 2.1中的多JWT承载身份验证-索赔问题

Authentication .net core 2.1中的多JWT承载身份验证-索赔问题,authentication,jwt,asp.net-core-2.1,bearer-token,Authentication,Jwt,Asp.net Core 2.1,Bearer Token,项目:.net核心2.1 API 在我的项目中,我需要包含2个JWT承载身份验证 a) 我们在内部创建令牌JWT并将其用于身份验证 b) 我们从外部第三方获得JWT令牌,并且需要对其进行身份验证 我在启动时尝试了以下代码: services.AddAuthentication( ) .AddJwtBearer("InteralBearer", options => { SymmetricSecurityKey key = TokenGenerator.GenerateKey

项目:.net核心2.1 API

在我的项目中,我需要包含2个JWT承载身份验证

a) 我们在内部创建令牌JWT并将其用于身份验证

b) 我们从外部第三方获得JWT令牌,并且需要对其进行身份验证

我在启动时尝试了以下代码:

 services.AddAuthentication( )
 .AddJwtBearer("InteralBearer", options =>
 {
     SymmetricSecurityKey key = TokenGenerator.GenerateKey();
     options.Audience = "***************";
     options.TokenValidationParameters = new TokenValidationParameters
     {
         ValidateIssuer = true,
         ValidIssuer = "***************",
         ValidateAudience = true,
         ValidAudience = "***************",
         ValidateIssuerSigningKey = true,
         IssuerSigningKey = key,
         ValidateLifetime = true
     };
 })
 .AddJwtBearer("ExternalBearer", options =>
 {
     options.Audience = "***************";
     options.Authority = "***************";
 });



services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("ExternalBearer", "InteralBearer")
.Build();

options.AddPolicy("Applicant", new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .AddAuthenticationSchemes("ExternalBearer", "InteralBearer")
    .RequireClaim("role", "Applicant")
    .Build());
});
在我的控制器中,我有:

[ApiController]
[Authorize(Policy = "Applicant")]
public class ApplicantController : ApplicantAbstract
{
}
我还有自定义自动化过滤器:

public class SelfAuthorizationFilter : IAuthorizationFilter
{
    public void OnAuthorization(AuthorizationFilterContext context)
    {
        ClaimsPrincipal principal = context.HttpContext.User;
        ........
    }
}
当我在上面进行设置时,问题是,context.HttpContext.User不会将任何声明作为请求中“Identity”对象的一部分返回。我希望“Claims”对象具有已配置的不同声明

如果我有“内在承载者”或“外在承载者”,那么每件事都很好,但不是两者都有


我做错了什么?

创建一个控制器,在该控制器中验证来自外部方的令牌,然后将该令牌交换为API令牌。请保留正确的编辑,Madhukar。可能的答案:创建一个控制器,在其中验证来自外部方的令牌,然后将该令牌交换为API令牌。请保留正确的编辑,Madhukar。可能的答案: