Как создать RSAPublicKey с помощью ключей Cognito - PullRequest
0 голосов
/ 03 июля 2018

Мне нужно сгенерировать открытый ключ для проверки токена JWT из Cognito. Вот ключи:

{
  keys: [
    {
      alg: "RS256",
      e: "AQAB",
      kid: "7sbG73+G/8A+wPT4Vaf/+ttnBHuLZcjEmfiBXl3E8Fk=",
      kty: "RSA",
      n: "blablablablabla",
      use: "sig"
    },
    {
      alg: "RS256",
      e: "AQAB",
      kid: "Zbf1euSHNj4lXgXHIQwYZfERTdm1Rkeqrm1ppnpClRR=",
      kty: "RSA",
      n: "blablablablabla",
      use: "sig"
    }
  ]
}

Я могу легко создать его с помощью ключа x5c из Azure, но я не могу сделать это с помощью Cognito. Какой ключ я должен использовать для создания RSAPublicKey?

 CertificateFactory factory = CertificateFactory.getInstance("X.509");

//Creating a cert from x5c key   
X509Certificate cert = (X509Certificate) factory.generateCertificate(new ByteArrayInputStream(DatatypeConverter.parseBase64Binary(x5c)));

RSAPublicKey publicKey = (RSAPublicKey) cert.getPublicKey();
RSAPrivateKey privateKey = null;

1 Ответ

0 голосов
/ 03 июля 2018

Я нашел решение в библиотеке auth0.

 String keyUrl = "https://cognito-idp.us-east-1.amazonaws.com/us-east-1_xxxxxx/.well-known/jwks.json";
 JwkProvider provider = new UrlJwkProvider(new URL(keyUrl));
 Jwk jwk = provider.get(kid);
 RSAPublicKey publicKey = (RSAPublicKey) jwk.getPublicKey();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...