Какой секрет используется для подписи токенов JWT в AWS Cognito, если секретный ключ клиента не сгенерирован - PullRequest
0 голосов
/ 04 мая 2020

Когда я создаю новый app client в AWS Cognito, у меня есть возможность не генерировать client secret (мне нужно отключить это, потому что, насколько я понимаю, nodejs приложения не поддерживают этот секрет), поэтому мне интересно, какой ключ затем используется для подписи токенов JWT, выпущенных Cognito

Ответы [ 2 ]

1 голос
/ 06 мая 2020

Секрет клиента не используется для подписи токенов JWT. Закрытый ключ используется для подписи токена и открытого ключа c для его проверки. Вы можете просмотреть публичные c ключи для своего пула пользователей по следующему URL:

https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json

Более подробную информацию об этом можно найти в AWS документации - Проверка JSON Веб-токена

0 голосов
/ 05 мая 2020

Наличие клиентского секрета зависит от того, собираетесь ли вы использовать для авторизации неявное или явное (или код авторизации). Nodejs приложения поддерживают оба. Ниже у меня есть пример запроса с разрешением authorization_code, где вам нужен секрет, когда вы будете выполнять запрос к конечной точке токена Cognito (передается как заголовки в авторизации). let enc = WNEMONITOR_APP_CLIENT_ID + ":" +WNEMONITOR_APP_CLIENT_SECRET request.post({ url: 'https://YourCognitoUserPoolDomain.auth.yourregion..amazoncognito.com/oauth2/token', headers: { Authorization: 'Basic ' + Base64.encode(enc), 'Content-Type': 'application/x-www-form-urlencoded' }, form: { grant_type: 'authorization_code', code: code, redirect_uri: theurlofyourapplication, scope: 'email openid profile', client_id: WNEMONITOR_APP_CLIENT_ID }

Ответом будет ваш id_token и refresh_token (если вы ранее настроили его для своего UserPool, в конфигурации клиента приложения установите флажок "ALLOW_REFRESH_TOKEN_AUTH")

In https://docs.aws.amazon.com/cognito/latest/developerguide/authorization-endpoint.html вы можете увидеть запросы в каждом конкретном случае.

В https://aws.amazon.com/blogs/mobile/understanding-amazon-cognito-user-pool-oauth-2-0-grants/ вы можете увидеть разницу между двумя грантами (неявными - без секрета и кодом авторизации), выберите лучший для вашего случая. Но это не имеет ничего общего с языком, на котором написано ваше приложение.

Если вы уверены, что вам не нужен грант authorization_code, вы можете настроить, чтобы не иметь такой секрет: В вашем пользователе Пул в консоли AWS go для клиентов приложений (слева) и на клиенте, который вы создадите, снимите флажок «Создать секрет клиента». Я не уверен, что вы можете редактировать клиент приложения, который вы уже создали. Но я уверен, что вы можете создать новый, а затем использовать идентификатор клиента нового для получения вашего токена.

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