Skip to content

Made public key an explicit option #18

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,14 @@ This module also support tokens signed with public/private key pairs. Instead of

```javascript
var publicKey = fs.readFileSync('/pat/to/public.pub');
jwt({ secret: publicKey });
jwt({ publicKey: publicKey });
```

By default, the decoded token is attached to `req.user` but can be configured with the `requestProperty` option.


```javascript
jwt({ secret: publicKey, requestProperty: 'auth' });
jwt({ publicKey: publicKey, requestProperty: 'auth' });
```

A custom function for extracting the token from a request can be specified with
Expand Down
4 changes: 2 additions & 2 deletions lib/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,9 @@ function wrapStaticSecretInCallback(secret){
}

module.exports = function(options) {
if (!options || !options.secret) throw new Error('secret should be set');
if (!options || !(options.secret || options.publicKey)) throw new Error('secret or publicKey should be set');

var secretCallback = options.secret;
var secretCallback = options.secret || options.publicKey;

if (!isFunction(secretCallback)){
secretCallback = wrapStaticSecretInCallback(secretCallback);
Expand Down
26 changes: 18 additions & 8 deletions test/jwt.test.js
Original file line number Diff line number Diff line change
@@ -1,20 +1,30 @@
var jwt = require('jsonwebtoken');
var assert = require('assert');
var fs = require('fs');

var restifyjwt = require('../lib');
var restify = require('restify');

describe('failure tests', function () {
var req = {};
var res = {};

it('should throw if options not sent', function() {
try {
restifyjwt();
} catch(e) {
assert.ok(e);
assert.equal(e.message, 'secret should be set');
}

it('should throw if options not sent', function() {
try {
restifyjwt();
} catch(e) {
assert.ok(e);
assert.equal(e.message, 'secret or publicKey should be set');
}
});

it('should not throw if options.secret', function() {
restifyjwt({secret: 'secret'});
});

it('should not throw if options.publicKey', function() {
var publicKey = fs.readFileSync('./test/test.key.pub');
restifyjwt({publicKey});
});

it('should throw if no authorization header and credentials are required', function() {
Expand Down
27 changes: 27 additions & 0 deletions test/test.key
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAsWpkHyQptOk+scl4s0oAikn8jKjrn6yi5X1BfLdMct3FtZEK
sa8SCwZ1m+qH7hMX8BzG8wdTiMzaM8QQzcdQYf/bOvGB5Byi44ZzCOlHIMXXm9XN
l0c+lLnYhm3y7s8TGAd6C/y5KXjycozxvR6VWz5LY4mCzkNlQtMCVQSh5tppr2uc
zkfeBpgCBk4H9jYGZhyTMZrTK8H/NUBI2o5rV1A+hRhz/677o3ccbK+Z6Rr/PtnC
bArBSdqH4Y/2aIcGcanJqiv25pJwoFcDGGtS16DrZGEX+Oj9X4fxJQadp+ohtyoZ
torg82M0ASqaPFIUSMgV/sebOcaeGHQ5aAhy1wIDAQABAoIBAA8ZqQ/leg9F0uo6
5aUM5WLfzTkDn5pljS/PK2W8DCuyqIM9pxVce0Ko+BWfLpaa1WzAZkaFFx0Lon7J
b0y0bCkLJ9Oqfo21yj9nUB8wC7fEXweKeQcpLzBlaQJ4FTcyNMPUzxR6HCBlhO0v
Bdw84CV19eCw8YswvUukvgwSat1FEVafbKUCajAaiADjlZr5rw1beW6nwczjTZY0
greCa1oOwAGvFD4xVWKKIi1+8Tl8jOnol+R6wjzsrSYSVPZM1ZGGKdbQnJe+n5Bi
5MrnOUgPE0lFNr8AEq9Gdq46Bl2++SK4RzFZadpx0zZ+fpdZuyo6rb00Yg/mRXh4
7X5mFqECgYEA54bhLmTYi1NeGIdk+8YUudfpevEdpnDEO0IE+qZnKkd5Tm6h1n8+
DUV1PCfS3bW9yFAbsTT5+BZUiNtB+7jmLBIe3VHpgj62YdHnuGboaoYjwn/ZqV8r
zY6PMBo05jyt78tW6sxvM1XLiF2mVZvWySjyHKO/KmysckCnirMpAzkCgYEAxCtC
aRFzxAkzHWIbgkuEEBxD2x1HdQfcJhhm3O9Z4drH4agsunLgMvCGYv5olrshcQOZ
6VRRAWQJtdWWoPqhImlI3T8Wsw5VEVSEiGKSaVClfDitP5g7mE1ilsmd1BFP46Od
H5pQxNhCsH0ph9Lb7H3Vyrtn712QJjWufEDe1o8CgYEApJdwccjjYHjNxeZK1eoF
RfDGXM4YZAB6oB3Y6E9vu9C/3hAsIQ6oEEs2gqNU9qSC3GqGpT2iDsnhIsGscMUL
bH0dT/0xYZQvl+7fKmqOA1yFA3pcRFoSC7my9WFMBflRNc16ZsUasIXngXQCEY4N
7UechtupxQEovrhT4vhmyZECgYAM8V28WO5ubLz2n1Z5Tko0VekUN+ZTDmW0DcAb
q58ei7TMarAozROFyODU/zwfVdFrB3XMM0f084jAeospq9+dyZyJHHR+898g+ZaU
+Qv37t48R/EGVSD5d4GduUe0ij/fIRho0WGq2ynrQxbOY1cnT1YfviWpYV71Zm1Q
vWb2eQKBgF0kcGzPSPDa5GuSyMVrwjB4CswmcWApu0aJVqXai8yq1G+iiJoE8mQG
FdARQSKhn1Ll2ZELU7nNeKfed24CGiOs8Z6EZqhDTBQb+2LGcQ46zi+IXT5KSsD6
IPJL9+f2JXJ1K+KmqJF5vUif3BLHcE1iIUkzTVDe+BNLChpLdO/T
-----END RSA PRIVATE KEY-----
1 change: 1 addition & 0 deletions test/test.key.pub
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCxamQfJCm06T6xyXizSgCKSfyMqOufrKLlfUF8t0xy3cW1kQqxrxILBnWb6ofuExfwHMbzB1OIzNozxBDNx1Bh/9s68YHkHKLjhnMI6Ucgxdeb1c2XRz6UudiGbfLuzxMYB3oL/LkpePJyjPG9HpVbPktjiYLOQ2VC0wJVBKHm2mmva5zOR94GmAIGTgf2NgZmHJMxmtMrwf81QEjajmtXUD6FGHP/rvujdxxsr5npGv8+2cJsCsFJ2ofhj/ZohwZxqcmqK/bmknCgVwMYa1LXoOtkYRf46P1fh/ElBp2n6iG3Khm2iuDzYzQBKpo8UhRIyBX+x5s5xp4YdDloCHLX