Uploaded image for project: 'WildFly'
  1. WildFly
  2. WFLY-12975

JWT is rejected if signature matching public key is not first in JWK set

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Major Major
    • None
    • None
    • MP JWT

      When public key on remote server is configured to be JWK set, the JWT which has correctly configured key ID to aim on matching public key from the set is rejected if matching public key is not on first position in the set array.

      This behavior is reproducible in the case the JWKS is set via mp.jwt.verify.publickey property.

      Attached is "flawed" key set with "blue-key" placed on first position in array when JOSE header has kid set to "orange-key" and JWT itself is signed by private key which is from "orange" key pair.

      This breaks MP-JWT specification compatibility because the MP-JWT 1.1 states:

      In section 9.2.3:

      If the incoming JWT uses the kid header field and there is a key in the supplied JWK set with the same kid, only that key is considered for verification of the JWT’s digital signature.

      In section 4.1:

      kid - This JOSE header parameter is a hint indicating which key was used to secure the JWT. RFC7515, Section-4.1.4

      And the RFC7515, Section-4.1.4 states:

      When used with a JWK, the "kid" value is used to match a JWK "kid" parameter value.

        1. jwks.json
          1 kB
        2. jwt.base64
          0.7 kB

              fjuma1@redhat.com Farah Juma
              jkasik@redhat.com Jan Kašík
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated: