AWS Cognito Authorizer Error 500 Не удалось выполнить выполнение из-за внутренней ошибки — нулевое значение в утверждении JWT

У меня проблема с авторизатором cognito, и у меня закончились варианты тестирования (которые я могу придумать), поэтому мне интересно, сталкивался ли кто-нибудь с подобными проблемами. Я искал форумы, и предыдущие случаи, похоже, были связаны с инцидентом AWS и «решились сами собой». Моя проблема длится уже больше недели.

У меня есть 3 пула пользователей Cognito, созданных с использованием Terraform (извините, Cloud Formation) и подключенных к разным REST API в качестве авторизаторов Cognito в шлюзе API. У меня есть еще 3, почти идентичных (за исключением имен), прикрепленных к еще 3 API.

Если я возьму действительный JWT, полученный с помощью AWS Amplify (или с помощью API Cognito напрямую), и либо протестирую авторизатор с помощью консоли, либо протестирую авторизатор с помощью CLI, либо сделаю запрос API к конечной точке с включенной аутентификацией, я получу следующее:

{
    "clientStatus": 500,
    "log": "Execution failed due to an internal error",
    "latency": 28
}

Я включил ведение журнала API Gateway, и это дает мало информации:

00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Extended Request Id: QOP7MG0ELPEFUBg=
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Starting authorizer: x1rebc for request: 63aac040-e610-11e8-a304-1dab6e773ddd
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Execution failed due to an internal error
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Gateway response type: DEFAULT_5XX with status code: 500
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Gateway response body: {"message":null}
00:17:50 (63aac040-e610-11e8-a304-1dab6e773ddd) Gateway response headers: {Access-Control-Allow-Origin=*, Access-Control-Allow-Headers=Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token, Access-Control-Allow-Methods=GET,OPTIONS}

Если я скопирую сценарий Terraform и разверну другой пользовательский пул и авторизатор, а затем прикреплю его к сломанной конечной точке API, тогда все будет в порядке. Если я прикреплю один из трех других авторизаторов, которые уже развернуты, к сломанной конечной точке API, тогда все в порядке.

Если я прикрепляю авторизатор из сломанной конечной точки к другой конечной точке API, которая работает и имеет включенную аутентификацию (в другом API, который работает с работающим авторизатором), то эта конечная точка API ломается... так что это говорит мне, что это это проблема Cognito, о которой я не могу получить никаких журналов!

Если бы это был практически любой другой ресурс AWS, я бы его выбросил, переустановил и начал заново. Однако понимание первопричины этого очень важно для меня, поскольку объединение производственного пула пользователей и всех пользователей и их данных, которые нельзя экспортировать или перенести (насколько я знаю), И перенастройка веб-приложения для использование нового приложения Cognito и идентификаторов пула пользователей, которые не могут быть статически сопоставлены (насколько я знаю), не является чем-то, чем я хочу рисковать в производственной среде.

Любая дополнительная информация или указатели будут очень признательны! Спасибо,

Том


person Toomy    schedule 13.11.2018    source источник


Ответы (2)


Если кто-то столкнется с этим, я только что добрался до сути проблемы (работая над этим несколько месяцев назад).

Я создавал заявку JWT с нулевым значением в триггере создания предварительного токена, например.

{ "field": null }

Cognito согласен с этим и отправляет токен обратно, когда вы входите в систему, вместе с этим нулевым значением. Однако, когда вы используете его для входа в систему, он падает и выдает загадочную «внутреннюю ошибку» без каких-либо подробностей.

Изменение на следующее устраняет проблему:

{ "field" "null" }

person Toomy    schedule 25.04.2019

В моем случае я получал эту ошибку из-за несоответствия типа данных пользовательского атрибута, определенного в пользовательском пуле cognito, и при добавлении из лямбда-генератора предварительного токена.

person Ashish Kumar    schedule 08.07.2020