Я пишу веб-приложение, которое использует AWS Cognito UserPools для аутентификации пользователей и IdentityPools для предоставления прямого доступа к корзине S3.
Это веб-приложение JavaScript имеет собственный идентификатор клиента приложения в пользовательском пуле, с которым оно взаимодействует.
У меня также есть несколько функций Lambda, выполняющих некоторые административные функции в отношении UserPool и IdentityPool. Эти лямбда-функции имеют собственный идентификатор клиента приложения.
Раньше у меня был только один поставщик аутентификации, добавленный в IdentityPool, с тем же идентификатором клиента приложения, который был установлен лямбда-функциями.
В этой настройке у веб-приложения возникли проблемы. Мне удалось пройти аутентификацию в UserPool, но когда токен удостоверения был отправлен в IdentityPool, я получил сообщение об ошибке «Токен не принадлежит поддерживаемому поставщику этого пула удостоверений». Я полагаю, это произошло потому, что параметр aud
JWT был установлен на идентификатор UserPool, который не был добавлен в IdentityPool.
В конце концов я понял, что могу избавиться от ошибки, если добавлю еще одного «поставщика аутентификации» в IdentityPool, заполнив тот же идентификатор UserPool и другой идентификатор клиента приложения.
Теперь мой вопрос - это правильный подход? Возможно, я неправильно понимаю значение и использование идентификатора клиента приложения? Я далеко от базы с моим подходом?
Да, это звучит как совершенно хороший подход. Если вы не сталкиваетесь с какими-либо проблемами безопасности или функциональности, это «правильный» подход.