Как использовать несколько пользовательских пулов Aws Cognito в AddAuthentication () в API-интерфейсе ASP.NET CORE 2.1 - PullRequest
1 голос
/ 04 апреля 2019

проблема, с которой я столкнулся в настоящее время, заключается в том, что у меня есть ASP.NET CORE API, где мы используем пользователей Aws Cognito для авторизации доступа к API, и это прекрасно работает. Теперь нам нужно авторизоваться с помощью второго пула пользователей, чтобы два разных пула пользователей могли получить доступ к API. У меня есть некоторые проблемы с тем, как добавить несколько аудитов / прав доступа в AddAuthentication / AddJwtBearer, похоже, что методы не могут принимать две схемы с одним и тем же именем "Bearer", кто-нибудь знает, как это можно сделать?

Я уже пытался добавить несколько AddJwtBearer, что приводит к сбою API. Пробовал разные вещи, но большинство решений использует несколько аудиторий, но никогда не говорит о нескольких авторитетах одновременно, если это имеет смысл.

В настоящее время, как это

 services.AddAuthentication("Bearer")
                   .AddJwtBearer(options =>
                   {
                       options.Audience = "AUDIENCE";
                       options.Authority = "AUTHORITY";
                   });

Я хочу что-то вроде этого

 services.AddAuthentication("Bearer")
                   .AddJwtBearer(options =>
                   {
                       options.Audience = "AUDIENCE";
                       options.Authority = "AUTHORITY";
                   })
                  .AddJwtBearer(options =>
                   {
                       options.Audience = "AUDIENCE2";
                       options.Authority = "AUTHORITY2";
                   });

Цель состоит в том, чтобы я хотел, чтобы пользователи обоих пулов пользователей могли авторизоваться через API, заранее благодарю за помощь!

1 Ответ

0 голосов
/ 25 апреля 2019

Вы должны добавить несколько носителей, как вы делали, но с разными именами.

services
    .AddAuthentication()
    .AddJwtBearer("Bearer1", options =>
    {
        options.Audience = "AUDIENCE";
        options.Authority = "AUTHORITY";
    })
    .AddJwtBearer("Bearer2", options =>
    {
        options.Audience = "AUDIENCE2";
        options.Authority = "AUTHORITY2";
    });

Затем, вместо UseAuthentication() позже, вы должны добавить свое собственное промежуточное программное обеспечение.

app.Use(async (context, next) =>
{
    var result = await context.AuthenticateAsync("Bearer1");
    if (!result.Succeeded)
    {
        result = await context.AuthenticateAsync("Bearer2");
    }

    context.User = result.Principal;

    await next();
});

Я сам не пробовал, просто собрал воедино из комментариев, поэтому дайте мне знать, если это работает для вас.

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