add capacity to decode by header-specified kid#72
Open
akdor1154 wants to merge 1 commit intohokaccha:masterfrom
Open
add capacity to decode by header-specified kid#72akdor1154 wants to merge 1 commit intohokaccha:masterfrom
akdor1154 wants to merge 1 commit intohokaccha:masterfrom
Conversation
|
If you were aiming for something, I would recommend JWKS but unfortunately most versions of Node don't support keys in the JWK format. I think as jwt-simple is designed to be simple, adding in JWKS support is a bit out of scope. jwt-simple currently supports Node 0.5 or so it says. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The JWT header parameter
kidcan specify a key id with which the token should be verified. (JWT Spec). This PR adds this functionality to the library, by allowing thekeyparameter todecodeto take a dictionary of{[keyId]: key}, and allowing thekidparameter ofheaderto specify which key to decode with.For example, if the header of
tokenlooks likethen
is equivalent to
.
This is useful for interacting with third party JWT issuers, for example AWS Cognito. With these, you do not necessarily know which secret will be used to sign a token in advance. The only way to use these services with this library currently is
Caveats
The
kidparameter will generally refer to a key specified in an array of JWKs, which look like this. It's possible you might want thekeysparameter to take an array ofJWKs instead of the dictionary of{[kid]:key}. IMO it's not worth the complexity, but if you want me to change it to work like this then I can do that. Note however that this would add dependencies to this module as the conversion from JWK to pem is non-trivial.