Commit Graph
77 Commits
Author SHA1 Message Date
José F. Romaniello 6b50ff324b fix issue with buffer payload. closes #216 2016-07-15 09:32:35 -03:00
José F. Romaniello 758ca5eeca temporarly fix an issue of double callback in JWS 2016-07-14 17:30:25 -03:00
José F. Romaniello bece881609 add redundant test 2016-07-14 17:18:41 -03:00
José F. Romaniello 084f537d3d do not stringify the payload when signing async - closes #224 2016-07-12 10:06:23 -03:00
José F. Romaniello 63263a28a2 do not mutate options in jwt.verify, closes #227 2016-07-12 09:52:32 -03:00
José F. Romaniello e11d505207 refactor into multiple files 2016-07-12 09:49:04 -03:00
lusarz 757a16e0e3 Exp calculated based on iat. fix #217 2016-06-22 10:42:23 +02:00
José F. Romaniello 1e46c5a42a change jwt.sign to return errors on callback instead of throwing errors 2016-05-19 12:47:24 -03:00
José F. Romaniello 65ddea934f Merge branch 'origin/clock_skew_tolerance' of https://github.com/jacopofar/node-jsonwebtoken into jacopofar-origin/clock_skew_tolerance 2016-04-29 11:30:21 -03:00
José F. Romaniello 7b0981380d improve async test 2016-04-29 08:54:48 -03:00
José F. Romaniello b51e31f477 include standard claims from payload. closes #196 2016-04-28 19:55:05 -03:00
José F. Romaniello 7b0ba50bb9 Merge branch 'verify-unsigned-tokens' of https://github.com/jonekdahl/node-jsonwebtoken into jonekdahl-verify-unsigned-tokens 2016-04-27 13:22:07 -03:00
José F. Romaniello 304f1b3307 throw error on invalid options when the payload is not an object 2016-04-27 12:49:54 -03:00
José F. Romaniello 53c3987b3c Improved the sign method
Notable changes:

1.  `expiresInMinutes` and `expiresInSeconds` are deprecated and no longer supported.
2.  `notBeforeInMinutes` and `notBeforeInSeconds` are deprecated and no longer supported.
3.  options are properly validated.
4.  `options.expiresIn`, `options.notBefore`, `options.audience`, `options.issuer`, `options.subject` and `options.jwtid` are mutually exclusive with `payload.exp`, `payload.nbf`, `payload.aud`, `payload.iss`, `payload.sub` and `payload.jti` respectively.
5.  `options.algorithm` is properly validated.
6.  `options.headers` is renamed to `options.header`.
2016-04-27 12:40:28 -03:00
José F. Romaniello e32043b8e9 make payload.exp and options.expiresIn exclusive 2016-04-27 11:43:22 -03:00
popomore 50873c7d45 feat: change .sign to standard async callback
- subscribe error event
- change the first argument of the callback as error
2016-04-27 17:24:51 +08:00
Jon Ekdahl 0f193887d3 Fix verification of unsigned tokens (fix #185) 2016-04-12 21:38:43 +02:00
Jacopo ac7e6a6a4a use the same timestamp in sync and async 2016-03-25 22:35:53 +01:00
jacopo_farina 08a5ff5836 add test for clockTolerance 2016-03-25 00:39:03 +01:00
jacopo_farina 649f4d9017 add tests about iat payload validation 2016-03-25 00:12:05 +01:00
José F. Romaniello 39d9309ae0 add support for validating multiples issuers. closes #163 2016-02-16 09:23:39 -03:00
Adam BarrettandJosé F. Romaniello 8aedf2b1f5 Fix tests in jwt.rs.tests.js which causes 4 to fail 2016-02-16 08:48:43 -03:00
José F. Romaniello 71200f14de add a console.warn on invalid options for string payloads 2016-01-04 09:30:01 -03:00
José F. Romaniello 65b1f58038 minor 2016-01-04 09:16:57 -03:00
José F. Romaniello be9c09af83 fix signing method with sealed objects, do not modify the params object. closes #147 2016-01-04 09:05:57 -03:00
José F. Romaniello 786d37b299 fix nbf verification. fix #152 2016-01-04 08:53:25 -03:00
José F. Romaniello 46372e928f improvements to nbf and jti claims 2015-12-28 14:09:17 -03:00
José F. Romaniello a3c5c23f5e Merge branch 'master' of https://github.com/TATDK/node-jsonwebtoken into TATDK-master
Conflicts:
	README.md
	index.js
2015-12-28 13:25:39 -03:00
José F. Romaniello 39ecc6f8f3 deprecate expireInMinutes and expireInSeconds - in favor of expiresIn 2015-10-02 08:13:13 -03:00
José F. Romaniello 8e89ee4f57 Merge branch 'max-age' of https://github.com/jden/node-jsonwebtoken into jden-max-age 2015-10-02 08:07:55 -03:00
Luke William Westby 9414fbcb15 added async signing 2015-09-27 12:48:44 -05:00
José F. Romaniello 7787dd74e7 add tests for options.headers 2015-08-19 10:26:49 -03:00
jden 8078b11b22 fix spelling error in error message 2015-07-16 08:21:14 -07:00
jden 49d54e54f7 add verify option maxAge (with tests) 2015-07-15 21:48:52 -07:00
jden d7c5793d98 add tests for verify expires 2015-07-15 21:03:00 -07:00
José F. Romaniello cfe05e961c Merge branch 'empty_secretOrPublicKey' of https://github.com/JackuB/node-jsonwebtoken into JackuB-empty_secretOrPublicKey 2015-07-15 09:00:25 -03:00
TAT f26ba4e2fa Added nbf support 2015-06-26 22:46:14 +02:00
TAT ab76ec5bc5 Added support for subject and jwt id 2015-06-26 20:43:04 +02:00
Jared Hanson ba3174d100 Fix example in README, silence verbose logging. 2015-05-15 13:36:10 -07:00
Jared Hanson 7254e011b5 Add option to return header and payload when decoding. 2015-05-15 09:37:58 -07:00
Jakub Mikulas ffe68dbe02 Typo 2015-04-21 13:06:24 +02:00
Alberto Pose 9f24ffd579 Renaming header.alg mismatch exception to invalid algorithm and adding more mismatch tests. 2015-04-10 14:53:42 -03:00
Alberto Pose 1e46234201 Updating to jws@^3.0.0
As `[email protected]` changed the verify method signature to be `jws.verify(signature, algorithm, secretOrKey)`, the token header must be decoded first in order to make sure that the `alg` field matches one of the allowed `options.algorithms`. After that, the now validated `header.alg` is passed to `jws.verify`

As the order of steps has changed, the error that was thrown when the JWT was invalid is no longer the `jws` one:

{ [Error: Invalid token: no header in signature 'a.b.c'] code: 'MISSING_HEADER', signature: 'a.b.c' }

That old error (removed from jws) has been replaced by a `JsonWebTokenError` with message `invalid token`. That's why this change will bump be a major.
2015-04-10 12:38:41 -03:00
Jakub Mikulas d6240e2418 Removed path from test 2015-03-30 19:30:35 +02:00
Jakub Mikulas 0fdf78d4db Prevent throw on undefined/null secret 2015-03-30 19:29:25 +02:00
Alex Layton 8df6aabbc7 Fix verify for RSAPublicKey formated keys 2015-03-26 13:52:13 -04:00
José F. Romaniello 7017e74db9 fix issue when public key start with BEING PUBLIC KEY. closes #70 2015-03-17 13:16:12 -03:00
José F. Romaniello 1bb584bc38 Verification with an asymmetric key of a token signed with a symmetric key
There is a vulnerability in this module when the verification part is expecting a token digitally signed with an asymetric key (RS/ES family) of algorithms but instead the attacker send a token digitally signed with a symmetric algorithm (HS* family).

The issue is because this library has the very same signature to verify both type of tokens (parameter: `secretOrPublicKey`).

This change adds a new parameter to the verify called `algorithms`. This can be used to specify a list of supported algorithms, but the default value depends on the secret used: if the secretOrPublicKey contains the string `BEGIN CERTIFICATE` the default is `[ 'RS256','RS384','RS512','ES256','ES384','ES512' ]` otherwise is `[ 'HS256','HS384','HS512' ]`.
2015-03-16 20:36:22 -03:00
José F. Romaniello 3b0d0b6160 add one more test 2015-03-10 13:59:38 -03:00
Andrew Balmos 5290db1bd7 First assume JWT claim set is an object
draft-ietf-oauth-json-web-token does not require JWT objects to have typ: "JWT"
in their header. Yet it expects that the JWT's claim set be JSON for validation.
See step 10 of draft-ietf-oauth-json-web-token section 7.2 "Validating a JWT".

Prior to this commit JWTs without typ: "JWT" in header are validated without
ever checking the claim set.
2015-03-06 16:33:05 -05:00