File tree Expand file tree Collapse file tree 1 file changed +15
-2
lines changed Expand file tree Collapse file tree 1 file changed +15
-2
lines changed Original file line number Diff line number Diff line change @@ -52,6 +52,19 @@ function getKeyFromJwkKeySetUrl(kid, url) {
52
52
} ) ;
53
53
}
54
54
55
+ function supportedJwk ( { kty, crv } ) {
56
+ switch ( kty ) {
57
+ case 'RSA' :
58
+ return true ;
59
+ case 'EC' :
60
+ return [ 'P-256' , 'P-384' , 'P-521' ] . includes ( crv )
61
+ // node-jose does not support e.g. OKP keys or non-registered curves such as P-256K
62
+ // we also don't populate the HMAC secret
63
+ default :
64
+ return false ;
65
+ }
66
+ }
67
+
55
68
export function downloadPublicKeyIfPossible ( decodedToken ) {
56
69
return new Promise ( ( resolve , reject ) => {
57
70
const header = decodedToken . header ;
@@ -80,9 +93,9 @@ export function downloadPublicKeyIfPossible(decodedToken) {
80
93
81
94
return httpGet ( data . jwks_uri )
82
95
} ) . then ( data => {
83
- data = JSON . parse ( data ) ;
96
+ const { keys } = JSON . parse ( data ) ;
84
97
85
- return jose . JWK . asKeyStore ( data ) ;
98
+ return jose . JWK . asKeyStore ( { keys : keys . filter ( supportedJwk ) } ) ;
86
99
} ) . then ( jwks => {
87
100
88
101
const keys = jwks . all ( { alg : header . alg , kid : header . kid , use : 'sig' } )
You can’t perform that action at this time.
0 commit comments