Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import jwtf #2658

Merged
merged 53 commits into from
Mar 12, 2020
Merged

Import jwtf #2658

merged 53 commits into from
Mar 12, 2020

Conversation

rnewson
Copy link
Member

@rnewson rnewson commented Mar 12, 2020

Overview

Import IBM Cloudant's JWT library (jwtf) including history.

Testing recommendations

N/A

Related Issues or Pull Requests

N/A

Checklist

rnewson and others added 30 commits May 6, 2017 09:32
Test does not pass yet.
* remove dependency on config
* make checks optional
* support HS256
and make everything truly optional.
* Improve pubkey not found error handling

When the public key identified by the {Alg, KID} tuple is not found on
the IAM keystore server, it's possible to see errors like:

([email protected])140> epep:jwt_decode(SampleJWT).
** exception error: no function clause matching
                    public_key:do_verify(<<"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjIwMTcwNTIwLTAwOjAwOjAwIn0.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0OjEyMzIx"...>>,
                                         sha256,
                                         <<229,188,162,247,201,233,118,32,115,206,156,
                                           169,17,221,78,157,161,147,46,179,42,219,66,
                                           15,139,91,...>>,
                                         {error,not_found}) (public_key.erl, line 782)
     in function  jwtf:public_key_verify/4 (src/jwtf.erl, line 212)
     in call from jwtf:decode/3 (src/jwtf.erl, line 30)

Modify key/1 and public_key_not_found_test/0 to account for keystore
changing from returning an error tuple to throwing one.
Tolerate 5 crashes per 10 seconds
jaydoane and others added 21 commits June 8, 2017 14:42
Currently jwtf tests don't run in a continuous integration
environment, presumably due to dependency rules.

This splits the tests into their own module, but requires exposing a
couple new functions in jwtf to support them. Some long lines were
also broken into smaller lengths.
Separate tests into dedicated module
Recent changes in how `jiffy:decode/1` handles malformed JSON has caused
`jwtf:decode/3` to fail to properly return a bad request 400 response
for some malformed tokens.

First, this changes the name of the function to `decode_b64url_json/1`,
indicating that it decodes something that has been first been JSON
encoded, and then base64url encoded.

More substantially, it wraps both the base64url and jiffy decoding in a
try/catch block, since both can throw errors, while the former can also
return an error tuple. Tests have been added to ensure all code paths
are covered.
Handle malformed tokens with jiffy 1.x
@rnewson rnewson requested review from kocolosk and wohali March 12, 2020 12:00
@rnewson rnewson mentioned this pull request Mar 12, 2020
4 tasks
@rnewson rnewson merged commit b14ec65 into master Mar 12, 2020
@rnewson rnewson deleted the import-jwtf branch March 12, 2020 14:10
rnewson added a commit that referenced this pull request Apr 1, 2020
@rnewson rnewson mentioned this pull request Apr 1, 2020
4 tasks
rnewson added a commit that referenced this pull request Apr 2, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants