Auth0 idtoken-verify, как получить модуль открытого ключа ssh-rsa - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь проверить JWT на стороне клиента с помощью библиотеки идентификатора-идентификатора Auth0 и выдает ошибку при проверке модуля и показателя моего открытого ключа (https://github.com/auth0/idtoken-verifier/blob/master/src/helpers/rsa-verifier.js#L25)

Открытый ключ: ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDmg9TCgeL+aTFrr6MiZ/FXcuh846XlQLHgDMIHDX74x1zwPPlx+voqx7sO4YH4wzmUjoA6XURj9tZSwFnWBkSntcvEMQLoN3ydKpSv0m8K8CQnOimZoRH5zEdGnkG2rIswcobuaqXUYHqLmQV1+vxY+ScX46/0+dVmLdhY9SjdgkTsO3N3GGlGXZIL92nmBVzD1gRKbMT9Lx0ZqHwTUGTxUcA4OxNojIRYX6B0xbyCBOlOn2p4lhOXJE8UypvHz6vhmP9FkCqrAVW/ii0S2hQnhR8aYQALsyQOig+ItR92VzGi/KyULx3fiNdeYe/rlxRffpNTWrun9xuM6aZwBLRp

Мне не удалось найти какую-либо информацию о том, как получить модуль и exp из ключа, сгенерированного с помощью ssh-keygen, поэтому я попытался вручную извлечь его с помощью этого сообщения ( Как сохранить / получить открытый RSA / закрытый ключ ) для получения:

exp : AQAB -> 65537

модуль : AQDmg9TCgeL+aTFrr6MiZ/FXcuh846XlQLHgDMIHDX74x1zwPPlx+voqx7sO4YH4wzmUjoA6XURj9tZSwFnWBkSntcvEMQLoN3ydKpSv0m8K8CQnOimZoRH5zEdGnkG2rIswcobuaqXUYHqLmQV1+vxY+ScX46/0+dVmLdhY9SjdgkTsO3N3GGlGXZIL92nmBVzD1gRKbMT9Lx0ZqHwTUGTxUcA4OxNojIRYX6B0xbyCBOlOn2p4lhOXJE8UypvHz6vhmP9FkCqrAVW/ii0S2hQnhR8aYQALsyQOig+ItR92VzGi/KyULx3fiNdeYe/rlxRffpNTWrun9xuM6aZwBLRp

Вот функция из библиотеки

function RSAVerifier(modulus, exp) {
  this.n = null;
  this.e = 0;

  if (modulus != null && exp != null && modulus.length > 0 && exp.length > 0) {
    this.n = new BigInteger(modulus, 16);
    this.e = parseInt(exp, 16);
  } else {
    throw new Error('Invalid key data');
  }
}

Verifier

const verifier = new IdTokenVerifier({
  issuer: 'https://somevalidurl.com',
  audience: 'access',
  expectedAlg: 'RS256',
  jwksCache: new DummyCache(),
});

DummyCache ()

class DummyCache {
  get() {
    let keyInfo = {
      'modulus': ??????,
      'exp': 65537,
    }
    return keyInfo;
  }
  has() {
    return true;
  }
  set() {
    return null;
  }
}

Я думаю, что я запутался в том, что ожидает параметр модуля, я попытался преобразовать вышеупомянутый модуль в пару различных форм (шестнадцатеричный, введите его через https://lapo.it/asn1js/, и т. Д.) Безуспешно.

...