Skip to content

Commit

Permalink
Merge pull request #116 from manpreet-compro/jwk-without-use-param
Browse files Browse the repository at this point in the history
Handling case when Jwk doesn't have 'use' parameter
  • Loading branch information
lbalmaceda authored Jan 16, 2020
2 parents 58dccc5 + 8347ebd commit b9ad2e1
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 3 deletions.
13 changes: 12 additions & 1 deletion src/JwksClient.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,18 @@ export class JwksClient {
}

const signingKeys = keys
.filter(key => key.use === 'sig' && key.kty === 'RSA' && key.kid && ((key.x5c && key.x5c.length) || (key.n && key.e)))
.filter((key) => {
if(key.kty !== 'RSA'){
return false;
}
if(!key.kid){
return false;
}
if(key.hasOwnProperty('use') && key.use !== 'sig'){
return false;
}
return ((key.x5c && key.x5c.length) || (key.n && key.e));
})
.map(key => {
if (key.x5c && key.x5c.length) {
return {
Expand Down
22 changes: 20 additions & 2 deletions tests/jwksClient.tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -278,7 +278,24 @@ describe("JwksClient", () => {
e: "AQAB",
n:
"s4W7xjkQZP3OwG7PfRgcYKn8eRYXHiz1iK503fS-K2FZo-Ublwwa2xFZWpsUU_jtoVCwIkaqZuo6xoKtlMYXXvfVHGuKBHEBVn8b8x_57BQWz1d0KdrNXxuMvtFe6RzMqiMqzqZrzae4UqVCkYqcR9gQx66Ehq7hPmCxJCkg7ajo7fu6E7dPd34KH2HSYRsaaEA_BcKTeb9H1XE_qEKjog68wUU9Ekfl3FBIRN-1Ah_BoktGFoXyi_jt0-L0-gKcL1BLmUlGzMusvRbjI_0-qj-mc0utGdRjY-xIN2yBj8vl4DODO-wMwfp-cqZbCd9TENyHaTb8iA27s-73L3ExOQ"
}
},
{
kid: "IdTokenSigningKeyContainer.v3",
nbf: 1459289287,
kty: "RSA",
e: "AQAB",
n:
"s4W7xjkQZP3OwG7PfRgcYKn8eRYXHiz1iK503fS-K2FZo-Ublwwa2xFZWpsUU_jtoVCwIkaqZuo6xoKtlMYXXvfVHGuKBHEBVn8b8x_57BQWz1d0KdrNXxuMvtFe6RzMqiMqzqZrzae4UqVCkYqcR9gQx66Ehq7hPmCxJCkg7ajo7fu6E7dPd34KH2HSYRsaaEA_BcKTeb9H1XE_qEKjog68wUU9Ekfl3FBIRN-1Ah_BoktGFoXyi_jt0-L0-gKcL1BLmUlGzMusvRbjI_0-qj-mc0utGdRjY-xIN2yBj8vl4DODO-wMwfp-cqZbCd9TENyHaTb8iA27s-73L3ExOQ"
},
{
kid: "IdTokenSigningKeyContainer.v4",
nbf: 1459289287,
use: "enc",
kty: "RSA",
e: "AQAB",
n:
"s4W7xjkQZP3OwG7PfRgcYKn8eRYXHiz1iK503fS-K2FZo-Ublwwa2xFZWpsUU_jtoVCwIkaqZuo6xoKtlMYXXvfVHGuKBHEBVn8b8x_57BQWz1d0KdrNXxuMvtFe6RzMqiMqzqZrzae4UqVCkYqcR9gQx66Ehq7hPmCxJCkg7ajo7fu6E7dPd34KH2HSYRsaaEA_BcKTeb9H1XE_qEKjog68wUU9Ekfl3FBIRN-1Ah_BoktGFoXyi_jt0-L0-gKcL1BLmUlGzMusvRbjI_0-qj-mc0utGdRjY-xIN2yBj8vl4DODO-wMwfp-cqZbCd9TENyHaTb8iA27s-73L3ExOQ"
},
]
});

Expand All @@ -289,12 +306,13 @@ describe("JwksClient", () => {
client.getSigningKeys((err, keys) => {
expect(err).to.be.null;
expect(keys).not.to.be.null;
expect(keys.length).to.equal(2);
expect(keys.length).to.equal(3);
expect(keys[0].rsaPublicKey).not.to.be.null;
expect(keys[0].kid).to.equal("IdTokenSigningKeyContainer");
expect(keys[1].kid).to.equal("IdTokenSigningKeyContainer.v2");
expect(keys[1].rsaPublicKey).not.to.be.null;
expect(keys[1].nbf).to.equal(1459289287);
expect(keys[2].rsaPublicKey).not.to.be.null;
done();
});
});
Expand Down

0 comments on commit b9ad2e1

Please sign in to comment.