Conjunto JWK do servidor público
1. Chaves públicas
O servidor Connect2id publica suas chaves criptográficaspúblicas:
- Para permitir que os clientes verifiquem a autenticidade dos tokens de ID emitidos.
- Para permitir que os clientes verifiquem a autenticidade das respostas do UserInfo codificadas pelo JWT.
- Para permitir que os clientes verifiquem a autenticidade das respostas de autorização (JARM) protegidas pelo JWT.
- Para habilitar os servidores de recursos (APIs web) para verificar tokens de acesso auto-contidos (codificados por JWT).
- Para permitir que os clientes criptografem objetos de solicitação (JAR) para o servidor.
- Para permitir que os clientes criptografem dicas de token de ID para o servidor.
As chaves públicas são extraídas do conjunto JWK do servidor configurado e disponibilizadas no mesmo formato, como JSON Web Keys (JWK).
A validação de assinatura (JWS) e a criptografia (JWE) dos JWTs podem ser realizadas com a biblioteca Nimbus JOSE+JWT de código aberto (Java), ou qualquer outra biblioteca compatível com JWS e JWE.
2. O conjunto de URL do JWK
Ele pode ser descoberto a partir do anunciado nos metadados do servidor Connect2id e tem este formulário:jwks_uri
https://[base-server-url]/jwks.json
3. Visão geral da API da Web
- Recursos
- /jwks.json [GET]
- Representações
- Conjunto JWK
- Erros
- 404 Não Encontrado
- 500 erros internos do servidor
4. Recursos
4.1 /jwks.json
4.1.1 GET
Recupera o conjunto JWK público do servidor Connect2id.
Êxito:
- Código: 200
- Tipo de conteúdo:
application/json
- Corpo: {objeto} O conjunto JWK do servidor Connect2id.
Erros:
- 404 Não Encontrado
- 500 erros internos do servidor
Solicitação de exemplo para obter as chaves públicas do servidor:
GET /jwks.json HTTP/1.1
Host: c2id.com
Resposta de exemplo com o conjunto JWK público do servidor, contendo chaves de assinatura e criptografia do tipo RSA, EC e OKP (para EdDSA):
HTTP/1.1 200 OK
Content-Type: application/json
{
"keys": [
{
"kty": "RSA",
"e": "AQAB",
"use": "sig",
"kid": "CXup",
"n": "hrwD-lc-IwzwidCANmy4qsiZk11yp9kHykOuP0yOnwi36VomYTQVEzZXgh2sDJpGgAutdQudgwLoV8tVSsTG9SQHgJjH9Pd_9V4Ab6PANyZNG6DSeiq1QfiFlEP6Obt0JbRB3W7X2vkxOVaNoWrYskZodxU2V0ogeVL_LkcCGAyNu2jdx3j0DjJatNVk7ystNxb9RfHhJGgpiIkO5S3QiSIVhbBKaJHcZHPF1vq9g0JMGuUCI-OTSVg6XBkTLEGw1C_R73WD_oVEBfdXbXnLukoLHBS11p3OxU7f4rfxA_f_72_UwmWGJnsqS3iahbms3FkvqoL9x_Vj3GhuJSf97Q"
},
{
"kty": "EC",
"use": "sig",
"crv": "P-256",
"kid": "yGvt",
"x": "pvgdqM3RCshljmuCF1D2Ez1w5ei5k7-bpimWLPNeEHI",
"y": "JSmUhbUTqiFclVLEdw6dz038F7Whw4URobjXbAReDuM"
},
{
"kty": "EC",
"use": "sig",
"crv": "P-384",
"kid": "9nHY",
"x": "JPKhjhE0Bj579Mgj3Cn3ERGA8fKVYoGOaV9BPKhtnEobphf8w4GSeigMesL-038W",
"y": "UbJa1QRX7fo9LxSlh7FOH5ABT5lEtiQeQUcX9BW0bpJFlEVGqwec80tYLdOIl59M"
},
{
"kty": "EC",
"use": "sig",
"crv": "P-521",
"kid": "tVzS",
"x": "AZgkRHlIyNQJlPIwTWdHqouw41k9dS3GJO04BDEnJnd_Dd1owlCn9SMXA-JuXINn4slwbG4wcECbctXb2cvdGtmn",
"y": "AdBC6N9lpupzfzcIY3JLIuc8y8MnzV-ItmzHQcC5lYWMTbuM9NU_FlvINeVo8g6i4YZms2xFB-B0VVdaoF9kUswC"
},
{
"kty": "OKP",
"use": "sig",
"crv": "Ed25519",
"kid": "27zV",
"x": "0I6olrZGYml7JGusuKJW9G7D0DZ9UormSady9kR7V4Q"
},
{
"kty": "RSA",
"e": "AQAB",
"use": "enc",
"kid": "IHMc",
"n": "lLrhwERiPmq7XOz6Rwk8q4ey_OGcL4P56Ip01mzKMUfysIwo-nUdwDI_9ntYohpvqiTjnrtZOENhhoqne5M4hqpSfBMmCWSvWL_3wa8FanRWd6lPgGdKJ1a3vV0gLxnCbmdho1CSuSszV4736WkjdDhLcXSRN1kWwWbok94FdPD_egCyBY3cwhvuRzmUgE8LDh-VnNRh1BYc7e9yEMublza8qJpW-N5ljHEU0on08X-lsyl4djEac74H7taDcmtchPLYZy0-ZIxgLmosQ2aYIt6xycfPYsm5x9CGetUqhClpLLaTcyTGq_pH4ECdZtkYHcYJM-3q-XDZTqB6wUaggw"
},
{
"kty": "EC",
"use": "enc",
"crv": "P-256",
"kid": "1yFA",
"x": "_-aKZeuwWDv4v89dPGdKtpOuOepc_0qDZDhcv3omzX0",
"y": "Gc5b7muOqbi4QvYJO24a4IqQoOY1pPM69DcpI605Vmw"
},
{
"kty": "EC",
"use": "enc",
"crv": "P-384",
"kid": "TqZ6",
"x": "3Ex0yUSLvhaOriP8U78kZEEJXxkC0oQmwo1zHTe_nhgKx2YPS97-qmDdRMkByxJ9",
"y": "MCosrhjIYP4lkoan45MxAZE3QB6IKau5nZHpQ_qDXH8jgcIo2l3M8wdN6iI08kcW"
},
{
"kty": "EC",
"use": "enc",
"crv": "P-521",
"kid": "h38C",
"x": "AVMBSexPHgq536pZQjN6Si1HAdUdfiW4xrdYzNHR2A9z4zovnKi5xrQ9hWX8QUs4ejVQ3bE9ufhOYL3D7oTwx9Jb",
"y": "AeMeo858k_6ktxNhlpxBSwGL2hmTI1nBeGi2ZrMVl2qzdjOFf-AVFRSsE9DhAD9sWVUrGrzwONbfmqwIlgbjeH7L"
}
]
}
5. Representações
5.1 Conjunto JWK do servidor
As chaves públicas do servidor Connect2id (uma ou mais), no formato JWK set RFC 7517.
Cada tecla do conjunto JWK tem um identificador único (). Os JWTs assinados emitidos identificarão a chave no parâmetro de cabeçalho JWS.kid
kid
Exemplo JWK definido incluindo uma única chave RSA de assinatura pública:
{
"keys" : [
{
"kty" : "RSA",
"use" : "sig",
"kid" : "P9Zd",
"e" : "AQAB",
"n" : "kWp2zRA23Z3vTL4uoe8kTFptxBVFunIoP4t_8TDYJrOb7D1iZNDXVeEsYKp6ppmrTZDAgd-cNOTKLd4M39WJc5FN0maTAVKJc7NxklDeKc4dMe1BGvTZNG4MpWBo-taKULlYUu0ltYJuLzOjIrTHfarucrGoRWqM0sl3z2-fv9k"
}
]
}
5. Erros
404 Não Encontrado
O recurso solicitado não existe.
Exemplo:
HTTP/1.1 404 Not Found
500 erros internos do servidor
Ocorreu um erro interno do servidor. Verifique os registros do servidor Connect2id para obter detalhes.
Exemplo:
HTTP/1.1 500 Internal Server Error