Я пытаюсь сделать следующее:
Возьмите токен, который был успешно сгенерирован с помощью 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 в контроллере. Это выглядит просто в руководстве выше, надеюсь, я просто упускаю что-то глупое.