{"_id":"stormpath-sdk-express","_rev":"33-3f0aea7e8654d7b7b345883a9d9c76b6","name":"stormpath-sdk-express","description":"Official Stormpath SDK for Express.js","dist-tags":{"latest":"0.6.0"},"versions":{"0.0.1":{"name":"stormpath-sdk-express","version":"0.0.1","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.0.1","dist":{"shasum":"d782c886e6e32ec46cdda7a9239d6fd7869ad532","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.0.1.tgz","integrity":"sha512-UsOJjqsvKruaTpHe/xVSq+faakuN47KI3q/VANppWb8Sr8RIHI3BXMjc87LU0G24vI5Cx7ftXpEpDsD5WGJqKA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCGgQOmmLDfBv9AK0YbvDV1W1XabtUXdybr88q9e/muiAIgAdsA6/mblJlWASgIlN8qxNeagpCCA0LM5ahkRd9AuhY="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"}]},"0.0.2":{"name":"stormpath-sdk-express","version":"0.0.2","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.0.2","dist":{"shasum":"0120bc76d9371a58211abee76c49b5be54ca18ea","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.0.2.tgz","integrity":"sha512-rDDkgppAuVxWcf4SxVV1c+1Kd7s1HKrFLBZxHnzIJMjLsxpNWWRXR/yc/l8Lucr/05HHSeV7f9M/4NN3SBl9EA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAPgq4zKh1ggXsPhhRPuxyVaRNN3bCe4vqwq4mKvR2v/AiA/aPc00jbTAApwOy1syAofCQe1qruvreyWzzk9Ns8gTA=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.0.3":{"name":"stormpath-sdk-express","version":"0.0.3","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.0.3","dist":{"shasum":"94cb799013b061438f044ff45f26cc672841ab41","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.0.3.tgz","integrity":"sha512-2RYl1KydUeoqkIGqGU14y1LqKGpPfiyK92Gozi75YRq0HXtK+BcmzzOEU01D7hFBsb8WS0VG8FcSemYbwdb4AQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCICoFa7gvxmFEg/RnClmcM8LBnwyy9fOJFww4ED1S5OHkAiEAm6WObktuFdYIdDNFqCvJRnM+SaZvMtdFqdCNM3Cunv4="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.0.4":{"name":"stormpath-sdk-express","version":"0.0.4","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.0.4","dist":{"shasum":"969559110864f054e6908dcf09643353fcdda07d","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.0.4.tgz","integrity":"sha512-81GNa1Lsq8ARCY/ySP9eI1VRGUee7WiDlCWn8c4tHESQ+4cPu53mqUqvrPHw+nlPLTvH8XvskL8Z4ZtgAbo2HA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIDuQqfJQgaFaaIOkAXm5qJ5TUgERm4OkkI7q8+pz3mHJAiEA7Y60kROg8741eGwKKwgsjGnJTqmtEpXvAZ+lb5I1iNc="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.0.5":{"name":"stormpath-sdk-express","version":"0.0.5","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.0.5","dist":{"shasum":"9aed7a65566c9996a3bac38278250296f4f32e8a","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.0.5.tgz","integrity":"sha512-i3HCg36X8XFwyHB2FgPx2oAM6D6m89fnWuQpoIjTVbWptaIRuSMVifN7qP29m6jpApmiF+fedOwNow/dcodWnQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCzLMdY0exOUXwU/JATvSGTsSqilh8c8+ScCITdHCmz+QIgMHIYVchSmGbVXxNX3QX6hNFUcOKSelAnpbqSKck+MLs="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.1.0":{"name":"stormpath-sdk-express","version":"0.1.0","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.1.0","dist":{"shasum":"593062f5d94f99ad8ed68e7e4bfac4f8a6ca004d","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.1.0.tgz","integrity":"sha512-RoLLp5EuFGyGvSvbwg9WfW3bVf4WgPMRnVH92SwS9oIQrjgDxO+fhZ3HnN+lt4ztNFhUoSj3u+O+xl2IPDtk9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCki11rxmfamFSBXHHgRMJzeOlww5QCYS/w42iTE8QA+gIgdZEVLscH/hfxmSjwLpNJh3nTD2CFXszeIhcbGZwGQVg="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.2.0":{"name":"stormpath-sdk-express","version":"0.2.0","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.2.0","dist":{"shasum":"255d1474d6bc07a5151abd03f42d5fc1a003fb9a","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.2.0.tgz","integrity":"sha512-UfZnUC3eXM5WlI5rD/PpHzSq7hA43kV46DVCDPUVHCUNUJqQfMPKyQbiKH3w2AnUYGGnDq7EU6b0y/oTttECdA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCjkqWD110KIUtEvMtrt91BIop+NkGQAsodG6coD8l4LAIhAJYt/6ZIMqjiF4kcIsTEkKYl1BEJKSKB5lY1V6ppNw9A"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.3.0":{"name":"stormpath-sdk-express","version":"0.3.0","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.3.0","dist":{"shasum":"b717e86803d985af17d85e71141c33f5282d5948","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.3.0.tgz","integrity":"sha512-Hn2T/VMoZimejrBFlhsuuUKbbncVgl+sMyJXjjNNCf1KenJBgEcVYU9cNdnyHyzHC+UJIT2V39vOebSD5GDdPQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDMThfCXwxlLLRPB0nxKEkZXBBJmLcp+tXE2AGh+dqdvwIgBtBVW/Szqkdj6XABRGEyrPQ4eUadygjn3BILY6TjFz4="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.0":{"name":"stormpath-sdk-express","version":"0.4.0","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.0","dist":{"shasum":"ef21c949d2440dd0b1693eb6151eb292ba2109dd","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.0.tgz","integrity":"sha512-+tGg1gj03exMv1Ha0ufiCcMTos2L31dHLmVmdf/U7DK8pD5dJPs42zyjz3eBj/qitzNmz2LV7RyagfIhmpF+jA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCa0kilTX/uiurJIUK1eSc1yeyr/BLRE96BwAxIcuQjTgIhALREKeHvvh0Hl6b10RKZUUIrJnI1UTru0825VMuiOON7"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.1":{"name":"stormpath-sdk-express","version":"0.4.1","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.1","dist":{"shasum":"0f441e6802ccfb4075f5bb41d71f2117f8d803f9","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.1.tgz","integrity":"sha512-4zlKxP3rcU9Ywgqsdi15mIiAtJj6z/fgDMi4qFnvLEb3MeDA5sjEL5Tj2AFPrXaxx06z7iVsAEjB6H1jvj0OoQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD9yhDkliVSiC5zsBQeRPumk+TApBI4q4lI+lCdO/I4UwIhALGuTuai3NKk9M3GBtq0mxC5njkEQvYLYyJBcwi2kVGD"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.2":{"name":"stormpath-sdk-express","version":"0.4.2","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.2","dist":{"shasum":"2378ba3102fd4a6f3ecfcb96d7ee2fb8ad5032a7","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.2.tgz","integrity":"sha512-uOdCn+j+NfU0PaqFLW20JmnmaKThxC2tkBs66DlYoMgsZCAMHHzsCIhe35MfV8aMmox5jDD5xPQtCi0rU2LZ0w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD3U1/Rxd1ZdT2xlApAxWcivVThbjfuMN29QvPhnaQNVwIgULUikCFvOR6g0W0iQvzr2n6ivg9STp4DcnMgjxAeCVA="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.3":{"name":"stormpath-sdk-express","version":"0.4.3","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.3","dist":{"shasum":"6bb8cc02c1ae822625a9cae175965f1560d5a0c1","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.3.tgz","integrity":"sha512-D7TxEcjm8S2Yh51S31ss554CLaJsYPEK2EEQCyXbKyPAWdw1PeLbkZ7nuZ7XS3kSZocUW6scAPSqUaagOTLCGA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDiEw70yjpt+yii1rfrWlPNOcC6Gx4SgHVb6psE21yBBAIgLHp8WkUMB76gWx+gfO4O4NInk6uoDgv0S/KLGFRPn2A="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.4":{"name":"stormpath-sdk-express","version":"0.4.4","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.4","dist":{"shasum":"e50249d850a2bb7859a7222797ae0649a6c88a7d","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.4.tgz","integrity":"sha512-lDmyXd4cyuyqjPpEv1SBkpSf5q/wEWzfgyvmiaZdGZmcRyrKua8Vyb7M1uGZjLDvFWQ5qpsJnl8p1eXHzF3F9g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCvfIOQMqQKGUnaBJNYt73zF/clelu5Tqm5wCeBXELj2QIgA3Azi7n91x98qoIFgQLI5tz5x+xmmcYQ8YnIYIc7dmA="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.5":{"name":"stormpath-sdk-express","version":"0.4.5","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.5","dist":{"shasum":"2b166b07a3928ddbf1cf7e0216c0dcd2792b6402","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.5.tgz","integrity":"sha512-5aJgXM1vm65c87M1OAM3HZj2bZAjMPYmwvXC2O0enuW9QPnX16SQN7mxHiL4vF+gsMTNqmP4sumDSH4P/UCn6Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIATW3aI2wKjmAM5Lp1jtsF8bDXfqRIF82VG1Og/Vx/TwAiAi07t0jE/lnEE009QR50+pEJ5Qi57GwDFCPO7yfA9Zdg=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.6":{"name":"stormpath-sdk-express","version":"0.4.6","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.6","dist":{"shasum":"2f3e11e59e19c6bf900f32c27681b1a553534a5a","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.6.tgz","integrity":"sha512-4eaRgF6X+XRtnexCxhHIbJg4MudFn7MMrZTNSJ/Kkk0/7veu9a5cPkwWaKglmzBgOvoYe2sER6NneQkucNoDuA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHQgV1/ob8gPpGpF/p+JtAGjna+6VoP40SBGFO6Co1gFAiAWnAv+6PcpEXD6SIjIOO0ke2EcGpuq1t83l+1S3lfD7w=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.7":{"name":"stormpath-sdk-express","version":"0.4.7","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.7","dist":{"shasum":"0c4630405c0f1ec3e7fd296d2680ef3f8da20391","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.7.tgz","integrity":"sha512-7EgB9N65X6MM4jPA0tBX241a3Mlk0U6+dr5ClsMlOD0LtXOEL+Pio2B5zLQAWWf7/9E/+jaQ/8Zwr8CPLXFHHA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIAYorQUcEFTo1ZJDbHiTrmmLd5aUC6S8w/SRaKY0eshUAiEA+nB4cTJpbos2rim0XVFno12YNtF2PvChHchhBUoahMo="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.8":{"name":"stormpath-sdk-express","version":"0.4.8","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.8","dist":{"shasum":"78f33d6c2fc31b670fb3b1d4c8a067de94b611a3","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.8.tgz","integrity":"sha512-ht61ZWqwq9IZ3kFChBGsqQrp1WpNRxqgVCVQD7tBMvONi4HVpsznPjo0IqTLV6ffZjqmH8RsPd9YQWTUiulnkw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIGX5n2Y8AzQI+y5xh9n4PPImWnF8Maa4RrgU5zY/jVwuAiEAk2TLejOHGsv+JICO36hs51zFygHi3yCJK5N0qbMWzaU="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.9":{"name":"stormpath-sdk-express","version":"0.4.9","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.9","dist":{"shasum":"cf18e32490dfd6fdd96ff3cf7406cb9232e27167","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.9.tgz","integrity":"sha512-bWdoszkuqpUewafKlzA+0MRUKn1DHHemqV29BrCoUZmEqcBERKWQfih5DnDutOXy91LEF28u8uTHvFQHPNmqCw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCR66Bjgb+NK78oZ+70F7SmvxId1ox1Pi+DNuvt8QAVwQIgZa+U3AEDR3+cb738X1GWuntDMRtfOjBK+fXAnosu7iE="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.4.10":{"name":"stormpath-sdk-express","version":"0.4.10","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"_id":"stormpath-sdk-express@0.4.10","dist":{"shasum":"0c8914b628f6e4703e31b0e83e249e1a6fcaa7f4","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.4.10.tgz","integrity":"sha512-6V+CsC92HOj7ujVU1/6zEGuBc6EI+pUz+08BblUDbkOS1vgqfsXB5VorU7dTSP3ChBgWgSrsNbaKI06lsLO4mQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCuLo3FWh5hOC4/sh7HxMbj+PtvkcqhWyw2oU5j6xaugQIgTLhP9oEH0vr4lcH2TxepuZxs5MX9e9m393EmQVymJn8="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}]},"0.5.0":{"name":"stormpath-sdk-express","version":"0.5.0","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"gitHead":"4c1ad49eceb2ef3cf2e4a10bc1f2d9235456f415","_id":"stormpath-sdk-express@0.5.0","_shasum":"cf5f68f3039d346ba1d40d76e363169ac627accc","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.10.26","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}],"dist":{"shasum":"cf5f68f3039d346ba1d40d76e363169ac627accc","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.5.0.tgz","integrity":"sha512-vCzo9J2SVnaVugiCFLVbDcdDl+6nomVVToB35Wmdgpqu17mHahVRGWfSOcBs14t4KPUa54qzN7WICrxc6ohKaA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD2Z+lyRLo1TyzO3Nc1WxqC2jl4LeiWxLu6qwBaWCJNOQIgJYIlLG5YCBib53GVA+bXapTLnmlAg0oYGA9StvF6N/4="}]}},"0.5.1":{"name":"stormpath-sdk-express","version":"0.5.1","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"gitHead":"6bed60334254fc7d5bba7f1b9c562c0e2a06377a","_id":"stormpath-sdk-express@0.5.1","_shasum":"78c17411f3c523ee4efd43d1c1a7d676e39cfd92","_from":".","_npmVersion":"2.14.3","_nodeVersion":"0.10.26","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}],"dist":{"shasum":"78c17411f3c523ee4efd43d1c1a7d676e39cfd92","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.5.1.tgz","integrity":"sha512-vFk7Yu47grPBQVdrGhWHYHk5aHlTqiZ5q5VuXcJUQrGU9/9UbIqBqLGXuAa9mGsAxUu7Iz8RpnBzLoYCObFjYw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDmjNxuEXh6WQYt7dHvgfVXIS3PLVurcFPedSrZRbGZ/gIhAIUQOTsclgJFLhbFn+hJskZXMP9eefXarh9eBPyx2dBm"}]}},"0.6.0":{"name":"stormpath-sdk-express","version":"0.6.0","main":"index.js","description":"Official Stormpath SDK for Express.js","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"license":"Apache-2.0","homepage":"https://github.com/stormpath/stormpath-sdk-express","bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"scripts":{"test":"mocha --timeout=5000 --reporter spec --bail --check-leaks test/","test-debug":"mocha --timeout=5000 --debug-brk --reporter spec --bail --check-leaks test/","test-cov":"istanbul cover node_modules/mocha/bin/_mocha -- --timeout=5000 --reporter dot --check-leaks test/"},"dependencies":{"node-uuid":"^1.4.2","stormpath":"^0.9.0","njwt":"0.0.1","async":"^0.9.0","underscore":"^1.8.2"},"devDependencies":{"mocha":"^2.1.0","supertest":"^0.15.0","express":"^4.11.1","body-parser":"^1.10.2","istanbul":"^0.3.5","njwt":"0.0.0","cookie-parser":"^1.3.3","pem":"^1.5.0"},"gitHead":"08960106b095211e10776672fdd6fcd4647c942a","_id":"stormpath-sdk-express@0.6.0","_shasum":"e2e7afdf8fdf2f91f4145dc73ff41d15e23b348b","_from":".","_npmVersion":"2.7.4","_nodeVersion":"0.12.2","_npmUser":{"name":"robertjd","email":"robert@robertjd.com"},"maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}],"dist":{"shasum":"e2e7afdf8fdf2f91f4145dc73ff41d15e23b348b","tarball":"https://registry.npmjs.org/stormpath-sdk-express/-/stormpath-sdk-express-0.6.0.tgz","integrity":"sha512-BKMWK1y1e8tQjlzREb4DbB/layvdQRFEOlOvj1A+93KSW2fNdYtFN/BAzjodjTbloPVRfGBkCY7QLgl1uamsLg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIA2Ci2RAXlh5g6JT/k4PO+128Y/HNbVq82NpleneN07uAiEAxS+f+eELDYdyT3sZokFNcFdifcY66A5KcABaT02G4ps="}]}}},"readme":"# Stormpath Express.js SDK [BETA]\n\n[![NPM Version](https://img.shields.io/npm/v/stormpath-sdk-express.svg?style=flat)](https://npmjs.org/package/stormpath-sdk-express)\n[![NPM Downloads](http://img.shields.io/npm/dm/stormpath-sdk-express.svg?style=flat)](https://npmjs.org/package/stormpath-sdk-express)\n[![Build Status](https://img.shields.io/travis/stormpath/stormpath-sdk-express.svg?style=flat)](https://travis-ci.org/stormpath/stormpath-sdk-express)\n\n## This module is BETA\n\nThe primary use-case of this module is to\nprovide a lean set of Express.js middleware that supports our new\n[Stormpath AngularJS SDK](https://github.com/stormpath/stormpath-angular)\n\nThis module does not provide any built-in views or Angular code, it is meant\nto be a back-end authentication and authorization API for a Single-Page Application.  If you are\nstarting a project from scratch and would like some guidance with creating\nan AngularJS application, please see our\n[Stormpath AngularJS Guide](http://docs.stormpath.com/angularjs/guide/index.html)\n\nIf you are looking for a comprehensive Express.js solution which includes a\nserver-side page templating system, please visit our [Stormpath-Express]\nintegration.  Note: we do not yet have an integration strategy for using\nAngularJS with [Stormpath-Express].\n\n**The following features are supported by this module:**\n\n* Register new accounts\n* Login users via username & password, Oauth Bearer Token, or Basic Auth\n* Email verification workflow\n* Password Reset Workflow\n\n**These features are NOT yet supported (but coming soon!):**\n\n* Social login\n* ID Site Integration\n\nIf you have questions or feedback about this library, please get in touch and share your\nthoughts! support@stormpath.com\n\n\n[Stormpath](https://stormpath.com) is a User Management API that reduces\ndevelopment time with instant-on, scalable user infrastructure.  Stormpath's\nintuitive API and expert support make it easy for developers to authenticate,\nmanage, and secure users and roles in any application.\n\n## Example Integration\n\nYou can see an example integration in the\n[Dashboard App Example](https://github.com/stormpath/stormpath-sdk-angularjs/tree/master/example/dashboard-app)\napplication, which is part of our [Stormpath AngularJS SDK](https://github.com/stormpath/stormpath-angular)\n\n\n## Table of Contents\n\n* [Usage](#usage)\n * [Installation](#usage-installation)\n * [Use with all routes](#usage-all)\n * [Use with some routes](#usage-some)\n * [Complex usage](#usage-complex)\n\n* [`spConfig` Options](#spConfig)\n  * [accessTokenCookieName](#access-token-cookie)\n  * [accessTokenTtl](#accessTokenTtl)\n  * [allowedOrigins](#allowedOrigins)\n  * [endOnError](#error-handlers)\n  * [forceHttps](#forceHttps)\n  * [postRegistrationHandler](#postRegistrationHandler)\n  * [scopeFactory](#scopeFactory)\n  * [spClient](#spClient)\n  * [tokenEndpoint](#tokenEndpoint)\n  * [writeAccessTokenToCookie](#access-token-cookie)\n  * [writeAccessTokenResponse](#access-token-response)\n  * [xsrf](#XSRF)\n\n* [Custom Token Strategies](#custom-token-strategies)\n\n* [Middleware API](#middleware-api)\n * [authenticate](#authenticate)\n * [authenticateApiKeyForToken](#authenticateApiKeyForToken)\n * [authenticateBasicAuth](#authenticateBasicAuth)\n * [authenticateBearerAuthorizationHeader](#authenticateBearerAuthorizationHeader)\n * [authenticateCookie](#authenticateCookie)\n * [authenticateForToken](#authenticateForToken)\n * [authenticateUsernamePasswordForToken](#authenticateUsernamePasswordForToken)\n * [authenticateSocialForToken](#authenticateSocialForToken)\n * [groupsRequired](#groupsRequired)\n * [logout](#logout)\n * [writeToken](#writeToken)\n\n* [Middleware Factory](#middleware-factory)\n\n* [Types](#types)\n * [Account](#Account)\n * [AuthenticationRequest](#AuthenticationRequest)\n * [Jwt](#Jwt)\n * [TokenResponse](#TokenResponse)\n\n\n\n\n## <a name=\"usage\"></a> Usage\n\n#### <a name=\"usage-installation\"></a> Install via NPM\n\n```bash\nnpm install --save stormpath-sdk-express\n```\n\nThe features in this library depend on cookies and POST body\ndata.  For that reason, you should use [cookie-parser] or [body-parser] or\nany other library that sets `req.cookies` and `req.body`.  If you need\nto install them:\n\n```bash\nnpm install --save cookie-parser body-parser\n```\n\n\n\n\n#### <a name=\"usage-all\"></a> Use with all routes\n\n\nTo use the library with default options, you will do the follwing:\n\n* Require the module\n* Create an instance of `spMiddlware`\n* Attach the default routes\n* Use the [`authenticate`](#authenticate) middleware on all your\nroutes, via `app.use()`\n\n**Basic Usage Example:**\n```javascript\nvar cookieParser = require('cookie-parser');\nvar bodyParser = require('body-parser');\nvar express = require('express');\nvar stormpathExpressSdk = require('stormpath-sdk-express');\n\nvar spConfig = {\n  appHref: 'YOUR_STORMPATH_APP_HREF',\n  apiKeyId: 'YOUR_STORMPATH_API_KEY_ID',\n  apiKeySecret: 'YOUR_STORMPATH_API_KEY_SECRET'\n}\n\nvar app = express();\n\napp.use(cookieParser());\napp.use(bodyParser.json());\n\nvar spMiddleware = stormpathExpressSdk.createMiddleware(spConfig);\n\nspMiddleware.attachDefaults(app);\n\napp.use(spMiddleware.authenticate);\n```\n\nDoing this will enable the following functionality:\n\n* All endpoints in your Express application will first be routed through the\n[`authenticate`](#authenticate) middleware, which will assert that the user has\nan existing access token.  If this is not true, an error response will be sent.\n\n* The endpoint `/oauth/token` will accept Client Password, Client Credential, or\n Social Login grant requests and respond with an access token if authentication is successful.\nDepending on the grant type (`password`, `client_credentials`, or 'social') it delegates to\n[`authenticateUsernamePasswordForToken`](#authenticateUsernamePasswordForToken)\n, [`authenticateApiKeyForToken`](#authenticateApiKeyForToken) or\n[`authenticateSocialForToken`](#authenticateSocialForToken).\n\n* The `/logout` endpoint will be provided for ending cookie-based sessions.\n\n\n* The [XSRF Protection](#XSRF) feature will be enabled.  After authentication,\nall POST requests will validated with an XSRF token as well.\n\n\n#### <a name=\"usage-some\"></a> Use with some routes\n\nIf you don't need to authenticate all routes, but still want to use token\nauthentication, then don't use the statement `app.use(spMiddleware.authenticate)`.\nInstead, use the [`authenticate`](#authenticate) middleware on the\nroutes that need authentication:\n\n**Specific Route Example:**\n```javascript\n// Enforce authentication on the API\n\napp.get('/api/*',spMiddleware.authenticate,function(req,res,next){\n  // If we get here, the user has been authenticated\n  // The account object is available at req.user\n});\n```\n\n#### <a name=\"usage-complex\"></a> More complex usage\n\nIf you have a more complex use case, we suggest:\n\n* Using the [`spConfig`](#spConfig) options to control features\n* Custom chaining of specific middleware from the [Middleware API](#middleware-api)\n* Create custom middleware using the [Middleware Factory Methods](#middleware-factory)\n* Creating multiple instances of `spMiddleware` with different [`spConfig`](#spConfig) options\n* Using the Router object in Express 4.x to organize your routes\n\n\n## <a name=\"spConfig\"></a> `spConfig` options\n\nThe default behavior of the middleware can be modified via the `spCpnfig` object\nthat you pass to `createMiddleware()`.  This section describes all the\navailable options and which middleware functions they affect.\n\n\n\n\n#### <a name=\"accessTokenTtl\"></a> Access Token TTL (seconds)\n\nThe default duration of access tokens is one hour.  Use `accessTokenTtl` to\nset a different value in seconds.  Once the token expires, the client\nwill need to obtain a new token.\n\n```javascript\nvar spConfig = {\n  accessTokenTtl: 60 * 60 * 24 // One day (24 hours)\n}\n```\n\nUsed by [`authenticateUsernamePasswordForToken`](#authenticateUsernamePasswordForToken), [`authenticateApiKeyForToken`](#authenticateApiKeyForToken), [`authenticateSocialForToken`](#authenticateSocialForToken)\n\n\n\n\n#### <a name=\"access-token-cookie\"></a> Access Token Cookie\n\nThe default response to a successful password grant request is to create an\naccess token and write it to a secure cookie.  The name of the cookie will be\n`access_token` and the value will be a JWT token.\n\nSet `{ writeAccessTokenToCookie: false }` if you do not want to write the access\ntoken to a cookie.\n\nUse `accessTokenCookieName` to change the default name of the cookie.\n\n**Example: disable access token cookies**\n```javascript\nvar spConfig = {\n  writeAccessTokenToCookie: false\n}\n```\n\n**Example: custom access token cookie name**\n```javascript\nvar spConfig = {\n  accessTokenCookieName: 'custom_cookie_name'\n}\n```\n\nUsed by [`authenticateUsernamePasswordForToken`](#authenticateUsernamePasswordForToken), [`authenticateCookie`](#authenticateCookie), [`authenticateSocialForToken`](#authenticateSocialForToken)\n\n\n\n\n#### <a name=\"access-token-response\"></a> Access Token Response\n\nBy default, this library will not send the access token in the\nbody of the response if the grant type is `password`.  Instead it will\nwrite the access token to an HTTPS-only cookie and send 201 for the response status.\n\nThis is for security purposes. By exposing it in the body, you expose it\nto the javascript environment on the client, which is vulnerable to XSS\nattacks.\n\nYou can disable this security feature by enabling the access token response writer:\n\n```javascript\nvar spConfig = {\n  writeAccessTokenResponse: true\n}\n```\n\nWhen enabled, the response body will be a [`TokenResponse`](#TokenResponse)\n\nUsed by [`authenticateUsernamePasswordForToken`](#authenticateUsernamePasswordForToken), [`authenticateSocialForToken`](#authenticateSocialForToken)\n\n\n\n\n#### <a name=\"allowedOrigins\"></a> Allowed Origins\n\nThis is a whitelist of domains that are allowed to make requests of your API.\nIf you are making cross-origin requests (CORS) to your server, you will need to\nwhitelist the origin domains with this option.  This library will automatically\nrespond with the relevant response headers that are required by CORS.\n\n```javascript\nvar spConfig = {\n  allowedOrigins: ['http://example.com']\n}\n```\n\nUsed by `autoRouteHandler` via `app.use(stormpathMiddleware)`\n\n#### <a name=\"error-handlers\"></a> Error Handlers\n\nBy default, the library will respond to failed authentication by ending the\nresponse and sending an appropriate error code and message.\n\nSet `endOnError` to false to disable this default behaviour.\n\nIn this case, the library will assign the error to `req.authenticationError`\nand continue the middleware chain.\n\n```javascript\nvar spConfig = {\n  endOnError: false\n}\n```\n\nUsed by `handleAuthenticationError`\n\n**Example: custom error handling**\n\n```javascript\napp.get('/secrets',spMiddleware.authenticate,function(req,res,next){\n  if(req.authenticationError){\n    res.json(401,{\n      error: req.authenticationError\n    });\n  }else{\n    res.json(200,{\n      message: 'Hello, ' + req.user.fullName\n    });\n  }\n});\n```\n\n\n\n#### <a name=\"forceHttps\"></a> HTTPS\n\nThis library auto-negotiates HTTP vs HTTPS.  If your server is accepting\nHTTPS requests, it will automatically add the `Secure` option to the\naccess token cookie.  This relies on [`req.protocol`][express.req.protocol] from the Express\nframework.\n\nIf your server is behind a load balancer, you should use the [`\"trust proxy\"`][trust-proxy-option]\noption for Express.\n\nIf you cannot trust that your forward proxy is doing the right thing, then you\nshould force this library to always use HTTPS.\n\n**Example: force HTTPS always**\n\n```javascript\nvar spConfig = {\n  forceHttps: true\n}\n```\nUsed by [`writeToken`](#writeToken)\n\n\n\n#### <a name=\"postRegistrationHandler\"></a> Post Registration Handler\n\nUse this handler to receive account objects that have been created. This handler\nis called after a POST to `/register` has resulted in a new account. You must\nend the response manually, or call `next()` to allow the default\nresponder to finish the response.\n\nThe newly created user is available at `req.user`.\n\n**Example: Add some custom data after registration**\n\n```javascript\nvar spConfig = {\n  postRegistrationHandler: function(req,res,next){\n    req.user.getCustomData(function(err,customData){\n      if(err){\n        res.end(err)\n      }else{\n        customData.myCustomValue = 'foo';\n        customData.save(function(err){\n          if(err){\n            res.end(err)\n          }else{\n            next();\n          }\n        })\n      }\n    });\n  }\n}\n```\n\n**Example: Send a custom registration response**\n\n```javascript\nvar spConfig = {\n  postRegistrationHandler: function(req,res,next){\n    res.end(\"Thank you for registering\");\n  }\n}\n```\n\n#### <a name=\"scopeFactory\"></a> Scope Factory\n\nBy default, the library will not add scope to access tokens, we leave this\nin your control. Implement a scope factory if you wish to respond to a requested scope by granting\nspecific scopes.  It will be called before the access token\nis written.  You MUST call the done callback with the granted scope.  If\nyour logic determines that no scope should be given, simply call back\nwith a falsey value.\n\nIf you need more control over the token creation, see\n[Custom Token Strategies](#custom-token-strategies)\n\n```javascript\n\nvar spConfig = {\n  // ...\n  scopeFactory: function(req,res,authenticationResult,account,requestedScope,done){\n\n    // requestedScope is a string passed in from the request\n\n    var grantedScope = '';\n\n    // do your logic, then callback with an error or the granted scope\n\n    done(null,grantedScope)\n\n  }\n}\n```\n\n\n\n#### <a name=\"spClient\"></a> spClient\n\nThis is a reference to the Stormpath Client that was created by this module,\nbased on the [`spConfig`](#spConfig) that was passed.\n\nThis is the client that is exported by the\n[Stormpath Node SDK][stormpath-node-sdk], you can use it to achieve all the\nStormpath API functionality that is supported by that SDK.  Full documentation\nhere:\n\nhttp://docs.stormpath.com/nodejs/api/home\n\n\n#### <a name=\"tokenEndpoint\"></a> Token Endpoint\n\nDefines the endpoint that is auto-bound to [`authenticateForToken`](#authenticateForToken).\nThe binding only happens if you call `app.use(spMiddleware)`.\n\n```javascript\nvar spConfig = {\n  tokenEndpoint: '/my/alt/token/endpoint'\n}\n```\n\n\n\n\n#### <a name=\"XSRF\"></a> XSRF Protection\n\nThis library combats [Cross-Site Request Forgery] by issuing XSRF tokens.\nThey are issued at the time an access token is created.  The value of the XSRF\ntoken is written to the `XSRF-TOKEN` cookie and stored as the `xsrfToken` claim\nwithin the access token.  Doing this allows the library to do a stateless\ncheck when validating XSRF tokens.\n\nYour client application, for any POST request, should supply the XSRF token\nvia the `X-XSRF-TOKEN: <token>` HTTP Header.  If you are using Angular.js, this\nwill happen for you automatically.\n\nIf you do not want to issue or validate XSRF tokens, disable the feature:\n\n```javascript\nvar spConfig = {\n  xsrf: false\n}\n```\n\n\n\n\n## <a name=\"custom-token-strategies\"></a> Custom Token Strategies\n\nThis library will issue JWT access tokens with a configurable TTL and scope.\nAll other values (`sub`, `iat`, etc.) are set automatically and\nused for verifying the integrity of the token during authentication.\n\nIf you want to implement your own token responder (not recommended!), you can\ndo so by setting the `{ writeTokens: false }` option in [`spConfig`](#spConfig)\n\nDoing this will prevent the library from automatically generating tokens and sending\nthem in responses.  Instead, it will provide an [`AuthenticationRequest`](#AuthenticationRequest)\nobject at `req.authenticationRequest` and call `next()`. It is\nup to you to generate a token and end the response.\n\n**NOTE:** Disabling token creation will also disable the creation and\nvalidation of XSRF tokens.\n\n\n## <a name=\"middleware-api\"></a> Middleware API\n\nThis section is a list of of middleware functions that are available\non the object that is returned by `createMiddleware(spConfig)`\n\nWhen you call `createMiddleware(spConfig)`, you are simply creating a set\nof middleware functions which are pre-bound to the Stormpath Application that\nyou define with the `spConfig` options.  You can then mix-and-match these\nmiddleware functions to create authentication logic that suits your\napplication.\n\n**WARNING**: We have put a lot of thought into the default decisions of this\nlibrary.  While we provide this API for developer use, it is required that\nyou understand the security trade-offs that you may be making by customizing\nthis library.  If you need any assistance, please contact support@stormpath.com.\n\n### <a name=\"authenticate\"></a> authenticate\n\nThis is a convenience middleware that will inspect the request and call\n[`authenticateCookie`](#authenticateCookie) or\n[`authenticateBearerAuthorizationHeader`](#authenticateBearerAuthorizationHeader) or\n[`authenticateBasicAuth`](#authenticateBasicAuth)\nfor you\n\n**Example usage: authenticate specific routes**\n\n````javascript\nvar app = express();\n\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\napp.get('/something',spMiddleware.authenticate,function(req,res,next){\n  res.json({message: 'Hello, ' + req.user.fullName});\n});\n````\n\n\n\n\n### <a name=\"authenticateCookie\"></a> authenticateCookie\n\nLooks for an access token in the request cookies.\n\nIf authenticated, assigns an [`Account`](#Account) to `req.user` and provides\nthe unpacked access token at `req.accessToken` (an instance of [`Jwt`](#Jwt))\n\nIf an error is encountered, it ends the response with an error.  If\nusing the option `{ endOnError: false}`, it sets\n`req.authenticationError` and continues the chain.\n\n**Example: use cookie authentication for a specific endpoint**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.get('/something',spMiddleware.authenticateCookie,function(req,res,next){\n  res.json({\n    message: 'Hello, ' + req.user.fullName + ', ' +\n      'you have a valid access token in a cookie. ' +\n      'Your token expires in: ' + req.accessToken.body.exp\n    });\n});\n````\n\n\n\n### <a name=\"authenticateBasicAuth\"></a> authenticateBasicAuth\n\nLooks for an access token in the `Authorization: Basic <Base64(apiKeyId:apiKeySecret)>` header\non the request\n\nIf authenticated, assigns an [`Account`](#Account) to `req.user` and provides\nthe unpacked access token at `req.accessToken` (an instance of [`Jwt`](#Jwt))\n\nIf an error is encountered, it ends the response with an error.  If\nusing the option `{ endOnError: false}`, it sets\n`req.authenticationError` and continues the chain.\n\n**Example: use Basic Authentication for a specific endpoint**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\nvar app = express();\n\napp.use(spMiddleware)\n\napp.get('/something',spMiddleware.authenticateBasicAuth,function(req,res,next){\n  res.json({\n    message: 'Hello, ' + req.user.fullName + ', ' +\n      'you have a valid API Key in your Basic Authorization header. ' +\n      'Your token expires in: ' + req.accessToken.body.exp\n    });\n});\n````\n\n\n\n\n### <a name=\"authenticateBearerAuthorizationHeader\"></a> authenticateBearerAuthorizationHeader\n\nLooks for an access token in the `Authorization: Bearer <Base64(accessToken)>` header\non the request\n\nIf authenticated, assigns an [`Account`](#Account) to `req.user` and provides\nthe unpacked access token at `req.accessToken` (an instance of [`Jwt`](#Jwt))\n\nIf an error is encountered, it ends the response with an error.  If\nusing the option `{ endOnError: false}`, it sets\n`req.authenticationError` and continues the chain.\n\n**Example: use bearer authentication for a specific endpoint**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\nvar app = express();\n\napp.use(spMiddleware)\n\napp.get('/something',spMiddleware.authenticateBearerAuthorizationHeader,function(req,res,next){\n  res.json({\n    message: 'Hello, ' + req.user.fullName + ', ' +\n      'you have a valid access token in your Authorization header. ' +\n      'Your token expires in: ' + req.accessToken.body.exp\n    });\n});\n````\n\n\n\n\n### <a name=\"authenticateApiKeyForToken\"></a> authenticateApiKeyForToken\n\nThis is used with the [Stormpath API Key Authentication Feature][Api Key Authentication].  It expects an\naccount's API Key and Secret to be supplied in HTTP headers via the HTTP\nBasic scheme.\n\n\n**Example: posting api key ID and secret to the token endpoint**\n```\nPOST /oauth/tokens?grant_type=client_credentials\nAuthorization: Basic <Base64(apiKeyId:apiKeySecret)>\n```\n\nIf the supplied credentials are a valid API Key for an account, this function will respond\nby writing a [`TokenResponse`](#TokenResponse) and ending the request.\n\n**Example: accept only api keys for token exchange**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.post('/oauth/token',spMiddleware.authenticateApiKeyForToken);\n````\n\n\n\n\n### <a name=\"authenticateUsernamePasswordForToken\"></a> authenticateUsernamePasswordForToken\n\nExpects a JSON POST body, which has a `username` and `password` field, and a\ngrant type request of `password`.\n\n**Example: posting username and password to the token endpoint**\n```\nPOST /oauth/tokens?grant_type=password\n\n{\n  \"username\": \"foo@bar.com\",\n  \"password\": \"aSuperSecurePassword\"\n}\n```\n\nIf the supplied password is valid for the username, this function will respond\nwith an access token cookie or access token response, depending on the configuration\nset by [`writeAccessTokenResponse`](#access-token-response) and\n[`writeAccessTokenToCookie`](#access-token-cookie)\n\n**Example: accept only username & password for token exchange**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.post('/login',spMiddleware.authenticateUsernamePasswordForToken);\n````\n\n### <a name=\"authenticateSocialForToken\"></a> authenticateSocialForToken\n\nExpects a JSON POST body, which has a `providerId` and `accessToken` field, and a\ngrant type request of `social`.\n\n**Example: posting providerId and accessToken to the token endpoint**\n```\nPOST /oauth/tokens?grant_type=social\n\n{\n  \"providerId\": \"facebook\",\n  \"accessToken\": \"aTokenReceivedFromFacebookLogin\"\n}\n```\n\nIf the supplied accessToken is valid for the provider, this function will respond\nwith an access token cookie or access token response, depending on the configuration\nset by [`writeAccessTokenResponse`](#access-token-response) and\n[`writeAccessTokenToCookie`](#access-token-cookie)\n\n**Example: accept only social for token exchange**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.post('/login',spMiddleware.authenticateSocialForToken);\n````\n\n\n\n#### <a name=\"authenticateForToken\"></a> authenticateForToken\n\nThis is a convenience middleware that will inspect the request\nand delegate to [`authenticateApiKeyForToken`](#authenticateApiKeyForToken),\n[`authenticateUsernamePasswordForToken`](#authenticateUsernamePasswordForToken)\nor [`authenticateSocialForToken`](#authenticateSocialForToken)\n\n**Example: manually defining the token endpoint**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.post('/tokens-r-us',spMiddleware.authenticateForToken);\n````\nNote: this example can also be accomplished with the `tokenEndpoint` option in`spConfig`.\n\n\n\n#### <a name=\"groupsRequired\"></a> groupsRequired\n\nThis middleware allows you to perform group-based authorization.  It takes\na string or array of strings.  If an array, the user must exist in all said\ngroups.\n\n**Example: manually defining the token endpoint**\n````javascript\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.get('/secrets',spMiddleware.groupsRequired('admin'));\n\napp.get('/not-so-secrets',spMiddleware.groupsRequired(['admin','editor']));\n````\nNote: this example can also be accomplished with the `tokenEndpoint` option in`spConfig`.\n\n\n\n\n#### <a name=\"writeToken\"></a> writeToken\n\nThis method will write an access token cookie or access token body response,\nas configured by the [`writeAccessTokenResponse`](#access-token-response) and\n[`writeAccessTokenToCookie`](#access-token-cookie) options.\n\nIt expects that `req.jwt` has already been populated by one of the authentication\nfunctions.\n\n**Example: manually defining the token endpoint**\n````\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.post('/tokens-r-us',spMiddleware.writeToken);\n````\nNote: example can also be accomplished with the `tokenEndpoint` option in `spConfig`.\n\n\n\n\n#### <a name=\"logout\"></a> logout\n\nThis method will delete the XSRF and access token cookies on the client.\n\n**Example: manually defining a logout endpoint**\n````\nvar spMiddleware = stormpathExpressSdk.createMiddleware({/* options */})\n\nvar app = express();\n\napp.get('/logout',spMiddleware.logout);\n````\n\n\n\n\n## <a name=\"middleware-factory\"></a> Middleware Factory Methods\n\nIf you only need certain features or middleware functions, you can construct\nthe middleware functions manually.  All middleware functions can be constructed\nby calling their constructor directly off the library export.  Simply\nuse a capital letter to access the constructor.  When calling the constructor,\nyou must provide an `spConfig` object with relevant options.\n\n**WARNING**: We have put a lot of thought into the default decisions of this\nlibrary.  While we provide this API for developer use, it is required that\nyou understand the security trade-offs that you may be making but customizing\nthis library.  If you need any assistance, please contact support@stormpath.com\n\nFor example: say you want one web service to issue access tokens for API\nAuthentication.  You then want all your other web services to read\nthese tokens and use them for authentication.\n\n**Example: a token generation webservice**\n```javascript\nvar express = require('express');\nvar stormpathSdkExpress = require('stormpath-sdk-express');\n\nvar spConfig = {\n  appHref: '',\n  apiKeyId: '',\n  apiKeySecret: '',\n}\n\nvar tokenExchanger = stormpathSdkExpress.AuthenticateApiKeyForToken(spConfig);\n\nvar app = express();\n\napp.post('/oauth/tokens',tokenExchanger);\n```\n\n**Example: authenticate tokens in your other web services**\n```javascript\nvar express = require('express');\nvar stormpathSdkExpress = require('stormpath-sdk-express');\n\nvar spConfig = {\n  appHref: '',\n  apiKeyId: '',\n  apiKeySecret: '',\n}\n\nvar authenticate = stormpathSdkExpress.Authenticate(spConfig);\n\nvar app = express();\n\napp.use('/api/*',authenticate,function(req,res,next){\n  // handle api request.  Account will be available at req.user\n});\n```\n\n\n\n## <a name=\"types\"></a> Types\n\nThese are the object types that you will find in this library.\n\n### <a name=\"Account\"></a> Account\n\nThis object is provided by the underlying [Stormpath Node SDK][stormpath-node-sdk],\nit is documented here:\n\nhttp://docs.stormpath.com/nodejs/api/account\n\n### <a name=\"AuthenticationRequest\"></a> AuthenticationRequest\n\nThis object is provided by the underlying [Stormpath Node SDK][stormpath-node-sdk].\nIt is documented here:\n\nhttp://docs.stormpath.com/nodejs/api/authenticationResult\n\n### <a name=\"Jwt\"></a> Jwt\n\nThese are objects that represent a JWT token.  They have methods for manipulating\nthe token and compacting it to an encoded string.  These instances are provided by\nthe [nJwt Library][nJwt].\n\n### <a name=\"TokenResponse\"></a> TokenResponse\n\nThis object encapsulates the compacted JWT, exposes the scope of the token,\nand declares the expiration time as seconds from now.\n\n**Example: token response format**\n```json\n{\n  \"access_token\": \"eyJ0eXAiOiJKV1QiLCJhbGc ...\",\n  \"expires_in\": 3600,\n  \"token_type\": \"Bearer\",\n  \"scope\": \"given-scope\"\n}\n```\n\n## Contributing\n\nIn lieu of a formal style guide, take care to maintain the existing coding\nstyle.  Add unit tests for any new or changed functionality.  Lint and test\nyour code using [Grunt](http://gruntjs.com/).\n\nYou can make your own contributions by forking the develop branch of this\nrepository, making your changes, and issuing pull request on the develop branch.\n\nWe regularly maintain this repository, and are quick to review pull requests and\naccept changes!\n\nWe <333 contributions!\n\n\n## Copyright\n\nCopyright &copy; 2015 Stormpath, Inc. and contributors.\n\nThis project is open-source via the [Apache 2.0 License](http://www.apache.org/licenses/LICENSE-2.0).\n\n[support@stormpth.com]: mailto:support@stormpath.com \"Email Stormpath Support\"\n[Express.js]: http://expressjs.com/ \"Express.js\"\n[cookie-parser]: https://github.com/expressjs/cookie-parser \"Cookie Parser\"\n[body-parser]: https://github.com/expressjs/body-parser \"Body Parser\"\n[nJwt]: https://github.com/jwtk/njwt \"nJWt\"\n[stormpath]: https://stormpath.com \"Stormpath\"\n[stormpath-sdk-angular]: https://github.com/stormpath/stormpath-angular \"Stormpath AngularJS SDK\"\n[stormpath-express]: https://github.com/stormpath/stormpath-express \"Stormpath\"\n[stormpath-node-sdk]: https://github.com/stormpath/stormpath-sdk-node \"Stormpath Node SDK\"\n[stormpath-api-key-docs]: http://docs.stormpath.com/guides/api-key-management/ \"Stormpath Api Key Management\"\n[Username and Password authentication]: http://docs.stormpath.com/rest/product-guide/#authenticate-an-account \"Username and Password authentication\"\n[Api Key Authentication]: http://docs.stormpath.com/guides/api-key-management/ \"Api Key Authentication\"\n[Cross-Site Request Forgery]: https://www.owasp.org/index.php/Cross-Site_Request_Forgery \"Cross-Site Request Forgery (CSRF)\"\n[trust-proxy-option]: http://expressjs.com/4x/api.html#trust.proxy.options.table\n[express.req.protocol]: http://expressjs.com/4x/api.html#req.protocol\n","maintainers":[{"name":"robertjd","email":"robert@robertjd.com"},{"name":"lhazlewood","email":"les@hazlewood.com"}],"time":{"modified":"2022-06-27T00:36:48.227Z","created":"2015-02-02T19:33:37.375Z","0.0.1":"2015-02-02T19:33:37.375Z","0.0.2":"2015-02-03T00:35:13.261Z","0.0.3":"2015-02-15T17:58:52.083Z","0.0.4":"2015-02-17T23:56:34.794Z","0.0.5":"2015-02-19T18:44:02.333Z","0.1.0":"2015-02-26T23:18:06.903Z","0.2.0":"2015-03-04T00:10:53.115Z","0.3.0":"2015-04-02T16:12:03.616Z","0.4.0":"2015-04-14T01:51:19.070Z","0.4.1":"2015-04-14T21:40:07.158Z","0.4.2":"2015-04-15T22:49:28.925Z","0.4.3":"2015-04-18T00:35:56.525Z","0.4.4":"2015-05-26T16:47:29.585Z","0.4.5":"2015-05-26T18:37:15.424Z","0.4.6":"2015-05-26T23:14:09.963Z","0.4.7":"2015-05-27T18:09:24.058Z","0.4.8":"2015-06-24T21:51:12.082Z","0.4.9":"2015-07-08T18:48:08.752Z","0.4.10":"2015-09-09T22:35:13.289Z","0.5.0":"2015-09-15T19:58:31.415Z","0.5.1":"2015-09-18T23:39:39.201Z","0.6.0":"2015-12-22T22:47:07.833Z"},"homepage":"https://github.com/stormpath/stormpath-sdk-express","keywords":["token authentication","stormpath","api","api authentication","user management","user login","identity","identity management","account","account login","login","authentication","authorization","access control","password","password hash","express"],"repository":{"type":"git","url":"git://github.com/stormpath/stormpath-sdk-express.git"},"author":{"name":"Stormpath, Inc.","email":"support@stormpath.com","url":"http://www.stormpath.com"},"bugs":{"url":"https://github.com/stormpath/stormpath-sdk-express/issues"},"license":"Apache-2.0","readmeFilename":"README.md","users":{"rocket0191":true}}