Где я могу получить открытый ключ для пула идентификации Cognito? - PullRequest
0 голосов
/ 23 февраля 2019

На самом деле я получил подписанный JWT для неаутентифицированного пользователя по следующему коду:

AWS.config.region = 'eu-central-1'; // Region
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'eu-central-1:cccccc-cccc-cccc-cccc',
    RoleArn: 'arn:aws:iam::iiiiiiiiiiiii:role/Cognito_MyIdentityPoolUnauth_Role'
});
// Obtain Open ID Token (JWT)
AWS.config.credentials.get(function() {
    console.log(AWS.config.credentials.params.WebIdentityToken);
});

Как мне получить открытый ключ для проверки подписи?

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

1 Ответ

0 голосов
/ 25 февраля 2019

Документация AWS описывает только то, как получить открытые ключи для пользовательских пулов, но есть и открытые ключи для пулов идентификации.В то время как URL для открытых ключей пула пользователей (https://cognito -idp. регион .amazonaws.com / userPoolId /. Хорошо известен / jwks.json )содержит идентификатор пула пользователей, которого нет в URL для пулов идентификации.

Публичные ключи для пулов идентификации Cognito можно получить по адресу https://cognito -identity.amazonaws.com / .well-known / jwks_uri .Это обеспечивает открытые ключи для всех возможных пулов идентификации в разных регионах.

Чтобы определить правильный ключ, необходимо проверить заголовок Open Id Token.Свойство kid определяет правильный ключ в списке ключей.

{
    "kid": "eu-central-11",
    "typ": "JWS",
    "alg": "RS512"
}

Например, в этом случае правый ключ будет:

{
    kty: "RSA",
    alg: "RS512",
    use: "sig",
    kid: "eu-central-11",
    n: "AL9Kz62JHMpn5kBEqyoaXkM56x3l3Wi0kg0Juv71QtXo5M4ZJYxouKdcrKfevYTRNm6DE0hTbJnyj7Bh4EYbmruGdSWE970xkcFJxcgak0j4rneRX5G1E/xN27M42OOLmZCe8O6l3nksD0XGOqBPqOSEP3pYCNAYMncpSGnit56fUX+yszfMjGP3DVSUFZKtXbqwt/S0VpBi5BQbbD57R8DKenQsPfln91tgGopmXP66vZ4yWRUzs/mqHxcez3FcgHHXc6AbEJ6GOSVd9t+BCUW5kVY0aYO301PJczvB3zfsI6qebjS6BFTvMp8SqK532ZRnXEMgs/5gc9cfxpDsgvk=",
    e: "AQAB"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...