AWS Cognito с ASP. NET Core REST API - PullRequest
       21

AWS Cognito с ASP. NET Core REST API

0 голосов
/ 14 апреля 2020

Я пытаюсь сделать следующее:

Возьмите токен, который был успешно сгенерирован с помощью AWS Cognito, и разрешите использовать этот токен для попадания в указанный c контроллер в ASP. NET простая настройка REST API.

У меня уже есть успешная настройка Cognito и выдача токенов на основе ссылки SAML на ADFS. Я могу получить токен через Postman из Cognito, и когда я использую этот токен со шлюзом API за имитационным методом, связанным с этой конфигурацией Cognito, он успешно работает, поэтому я знаю, что токен генерируется и используется для аутентификации на API-шлюзе.

Итак, после этого https://aws.amazon.com/blogs/developer/now-generally-available-the-asp-net-core-identity-provider-for-amazon-cognito - все должно быть довольно просто.

У меня в настройках приложения. json

"AWS": {
    "Region": "us-east-2",
    "UserPoolClientId": "xxx",
    "UserPoolClientSecret": "xxx",
    "UserPoolId": "us-east-2_xxxxxx"
  },

In Startup.cs, как показано в руководстве, под ConfigureServices, среди нескольких других настроек, у меня есть services.AddCognitoIdentity(); и, наконец, у меня app.UseAuthentication(); в Configure.

В моем контроллере API у меня просто есть [Authorize(Roles = "readonly")] - это имя группы в пуле пользователей Cognito, в котором находится пользователь, успешно прошедший аутентификацию на Cognito.

Когда я использую этот же токен, подключенный к. NET Core API напрямую с использованием вышеуказанной настройки, он терпит неудачу без каких-либо значимых сообщений и затем пытается переадресовать вызов API на https://localhost: 8080 / Account / Login? ReturnUrl = / api / test , который возвращает (в данном случае Postman) 404.

2020-04-13 20:28:38.495 -05:00 [Information] Service=Services Env=VM Context=Microsoft.AspNetCore.Authorization.DefaultAuthorizationService Authorization failed.
2020-04-13 20:28:38.499 -05:00 [Information] Service=Services Env=VM Context=Microsoft.AspNetCore.Mvc.Internal.ControllerActionInvoker Authorization failed for the request at filter 'Microsoft.AspNetCore.Mvc.Authorization.AuthorizeFilter'.
2020-04-13 20:28:38.508 -05:00 [Information] Service=Services Env=VM Context=Microsoft.AspNetCore.Mvc.ChallengeResult Executing ChallengeResult with authentication schemes ([]).
2020-04-13 20:28:38.537 -05:00 [Information] Service=Services Env=VM Context=Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler AuthenticationScheme: Identity.Application was challenged.
* 1 030 * Я пробовал оба. NET Core 2.2 и 3.1, но безуспешно.

В конечном итоге я пытаюсь поддерживать несколько групп пользователей в пуле Cognito и на основе этой группы авторизовать (или нет) кто-то может использовать специфицированный c API в контроллере. Это выглядит просто в руководстве выше, надеюсь, я просто упускаю что-то глупое.

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