nodeSolidServer / nodeSolidServer/node-solid-server

authorize endpoint fails if public jwk doesn't include .alg

Ouverte
#1,565 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
JavaScript
Étoiles
1.8k
Forks
308
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

In the guide for the webid-oidc spec, the "Authorization Request" step describes the encoding of the request paramater.

This includes the public key of a JWK in the key field. I'm using a python tool to generate keys (jwcrypto), but when it generates a public key it doesn't include the "alg" field:

{
  "kty": "RSA",
  "n": "sezpNr99QA7xMqkNvpZamVDdkiAn_xvuH2H5nTFKYDKILny3a1hp2ULV2nvumiCt9IsxEuvPjAGRQsPMKwDkCjhzO70EoFyb2k2PzwBk_Fd37xNbl4Nrb4W9zK7Vff5vXmtBOFSSzsUdUf52zZMii7RZBcDQSLcmv63qV_NDpvGNOTadth1nbJhzMtQDQWBlWbClI8Z4R0fGgx7yhQvMqOl6vIlFfricBcoe2nopS51uUbsZSNSkTrGHCsBM_ggvVcWzFAvipkSsplEPhvdT1K7oC4Q6yNG6koPPajpxNnEw05Nh5YHIUcmhFKj76rqaCNtwBejYBxeQp2rwnLekKQ",
  "e": "AQAB"
}

According to the JWK spec, this parameter is optional: https://tools.ietf.org/html/rfc7517#section-4.4

When generating an authorization request, if the key doesn't include alg, node-solid server returns an error. The exception that causes this is:

normalizedAlgorithm = Error: undefined is not a supported algorithm
at SupportedAlgorithms.normalize (node_modules/@solid/jose/src/algorithms/SupportedAlgorithms.js:75:14)
at Function.importKey (node_modules/@solid/jose/src/jose/JWA.js:89:51)
at Function.importKey (node_modules/@solid/jose/src/jose/JWK.js:31:16)
at AuthenticationRequest.loadCnfKey (node_modules/@solid/oidc-op/src/handlers/AuthenticationRequest.js:212:16)
at node_modules/@solid/oidc-op/src/handlers/AuthenticationRequest.js:176:26

It seems that jose.JWA expects that the alg field exists: https://github.com/solid/jose/blob/71ebf31761002bcb18ce88e739a30a8a6459936f/src/jose/JWA.js#L89

I couldn't find any specific webid-oidc documentation that says that alg is required in this case. It might be nice for node-solid-server to return an explicit error message if a submitted key doesn't include it.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par AuthenticationRequest.loadCnfKey dans @solid/oidc-op et suivez les appels à importKey à travers @solid/jose/src/jose/JWK.js et JWA.js. Comparez le comportement avec le guide WebID-OIDC authorization-request et la RFC 7517 ; c’est terminé lorsque le cas où alg est manquant a un résultat explicite et approprié pour le endpoint authorize.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
javascript, nodejs
Domaine
authentication, backend
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.