/ / Ako dekódovať klávesy z Keycloak openid-connect cert api-jwt, verejný kľúč, openid-connect, keycloak

Ako dekódovať klávesy od Keycloak openid-connect cert api-jwt, verejný kľúč, openid-connect, keycloak

Snažím sa získať kľúč z koncového bodu Keycloak open-id connect certs, ktorý mi dovoľuje overiť token JWT.Api pre načítanie kľúčov šev do práce:

GET http://localhost:8080/auth/realms/my-realm/protocol/openid-connect/certs

{
"keys": [
{
"kid": "MfFp7IWWRkFW3Yvhb1eVrtyQQNYqk6BG-6HZFpl_JxI",
"kty": "RSA",
"alg": "RS256",
"use": "sig",
"n": "qDWXUhNtfuHNh0lm3o-oTnP5S8ENpzsyi-dGrjSeewxV6GNiKTW5INJ4hDQ7ZWkUFfJJhfhQWJofqgN9rUBQgbRxXuUvEkrzXQiT9AT_8r-2XLMwRV3eV_t-WRIJhVWsm9CHS2gzbqbNP8HFoB_ZaEt2FYegQSoAFC1EXMioarQbFs7wFNEs1sn1di2xAjoy0rFrqf_UcYFNPlUhu7FiyhRrnoctAuQepV3B9_YQpFVoiUqa_p5THcDMaUIFXZmGXNftf1zlepbscaeoCqtiWTZLQHNuYKG4haFuJE4t19YhAZkPiqnatOUJv5ummc6i6CD69Mm9xAzYyMQUEvJuFw",
"e": "AQAB"
}
]
}

ale kde je kľúč a ako ju dekódovať? $.keys[0].n nevyzerá ako base64 a nemôžem prísť na to, čo to je? ... ak mi niekto môže povedať, ako získať verejný kľúč z tohto užitočného zaťaženia, bude to skvelé!

odpovede:

5 pre odpoveď č. 1

Pozerajúc sa na https://github.com/keycloak/keycloak/blob/master/core/src/main/java/org/keycloak/jose/jwk/JWKParser.java že šifrovaný kľúč je kódovaný pem pomocou:

  • modulus
  • exponent

Pozrite sa na uvedenú javovú triedu, aby ste získali verejný kľúč v jazyku java alebo https://github.com/tracker1/node-rsa-pem-from-mod-exp získať verejný kľúč v jazyku javascript.