Получение ошибки valid_client при использовании следующей аутентификации для cognito

У меня есть приложение Next JS, библиотека следующей аутентификации и aws cognito для хранения информации о пользователях. Я создал общедоступный клиент в своем пуле пользователей Cognito и, используя этот идентификатор пула пользователей и идентификатор клиента, сначала успешно подключил свое приложение к Cognito. Тогда я не использовал next-auth.

Теперь я решил использовать next-auth и взять все это на серверную сторону. Я все еще использую старый клиент Cognito. Он правильно перенаправляет меня в пользовательский интерфейс входа в Cognito, но после успешного входа в систему следующая ошибка вызывает следующую аутентификацию

https://next-auth.js.org/errors#oauth_callback_error invalid_client {
  error: OPError: invalid_client ...

Затем появляется след ошибки, за которой следует

  name: 'OAuthCallbackError',
    code: undefined
  },
  providerId: 'cognito',
  message: 'invalid_client'
}

Почему я получаю эту ошибку?

В следующей ссылке JS указано, что «OAUTH_CALLBACK_ERROR» означает

This can occur during the handling of the callback if the code_verifier cookie was not found or an invalid state was returned from the OAuth provider.

Я не уверен, что это за файл cookie «code_verifier», поскольку я не пытался сделать что-либо дополнительно с помощью следующей аутентификации и не менял никаких конфигураций, которые могли бы вызвать это.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
3
0
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

next-auth запустит его на стороне сервера, поэтому вам понадобится Confidential client вместо Public client.

Вот как AWS Cognito описал разные типы клиентов:

Публичный клиент: Нативное приложение для браузера или мобильного устройства. Запросы Cognito API выполняются из пользовательских систем, которым не доверен секрет клиента.

Конфиденциальный клиент Серверное приложение, которое может безопасно хранить секрет клиента. Запросы Cognito API выполняются с центрального сервера.

Вот почему, хотя ваш предыдущий общедоступный клиент работал не на стороне сервера, этот клиент «недопустим» для использования в поставщике функций на стороне сервера, таком как next-auth.

Создайте Confidential client и используйте секрет клиента.

Другие вопросы по теме