Множественная проверка подлинности канала-носителя JWT в .net core 2.1 - проблема с утверждениями - PullRequest
0 голосов
/ 18 февраля 2019

Проект: API-интерфейсы .net core 2.1

В моем проекте необходимо включить 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());
});

В моем контроллере Ihave:

[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 не возвращает никаких утверждений как часть "Идентичность »объекта в запросе.Я ожидаю, что объект "Заявки" будет иметь разные утверждения, которые уже настроены.

Все работает нормально, если у меня есть либо "InternalBearer" или "ExternalBearer", но не оба.

Что такоея здесь не так делаю?Любая помощь приветствуется.

С уважением, Мадху

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...