// Load modules var Http = require('http'); var Request = require('request'); var Hawk = require('../lib'); // Declare internals var internals = { credentials: { dh37fgj492je: { id: 'dh37fgj492je', // Required by Hawk.client.header key: 'werxhqb98rpaxn39848xrunpaw3489ruxnpa98w4rxn', algorithm: 'sha256', user: 'Steve' } } }; // Credentials lookup function var credentialsFunc = function (id, callback) { return callback(null, internals.credentials[id]); }; // Create HTTP server var handler = function (req, res) { Hawk.server.authenticate(req, credentialsFunc, {}, function (err, credentials, artifacts) { var payload = (!err ? 'Hello ' + credentials.user + ' ' + artifacts.ext : 'Shoosh!'); var headers = { 'Content-Type': 'text/plain', 'Server-Authorization': Hawk.server.header(credentials, artifacts, { payload: payload, contentType: 'text/plain' }) }; res.writeHead(!err ? 200 : 401, headers); res.end(payload); }); }; Http.createServer(handler).listen(8000, '127.0.0.1'); // Send unauthenticated request Request('http://127.0.0.1:8000/resource/1?b=1&a=2', function (error, response, body) { console.log(response.statusCode + ': ' + body); }); // Send authenticated request credentialsFunc('dh37fgj492je', function (err, credentials) { var header = Hawk.client.header('http://127.0.0.1:8000/resource/1?b=1&a=2', 'GET', { credentials: credentials, ext: 'and welcome!' }); var options = { uri: 'http://127.0.0.1:8000/resource/1?b=1&a=2', method: 'GET', headers: { authorization: header.field } }; Request(options, function (error, response, body) { var isValid = Hawk.client.authenticate(response, credentials, header.artifacts, { payload: body }); console.log(response.statusCode + ': ' + body + (isValid ? ' (valid)' : ' (invalid)')); process.exit(0); }); });