Skip to content
This repository has been archived by the owner on Oct 14, 2020. It is now read-only.

wolfeidau/ofuda

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ofuda Build Status

NPM NPM

HMAC authentication module for NodeJS.

Getting Started

Install the module with: npm install ofuda

Ofuda = require('ofuda');

var ofuda = new Ofuda({headerPrefix:'Amz', hash: 'sha1', serviceLabel: 'AWS', accessKeyId: '44CF9590006BF252F707', accessKeySecret: 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'});

ofuda.signHttpRequest(request); // appends a hmac authorisation header to the request

Documentation

Use as a client is illustrated below.

var http = require('http');
var Ofuda = require('ofuda');

var ofuda = new Ofuda({headerPrefix:'Amz', hash: 'sha1', serviceLabel: 'AWS', debug: true});

var credentials = {accessKeyId: '44CF9590006BF252F707', accessKeySecret: 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'};

http_options = {
    host: 'localhost',
    port: 8080,
    path: '/notify',
    method: 'PUT',
    headers: {
        'Content-Type': 'application/json',
        'Content-MD5': 'ee930827ccb58cd846ca31af5faa3634'
    }
};

signedOptions = ofuda.signHttpRequest(credentials, http_options);

var req = http.request(signedOptions, function(res) {
    console.log('STATUS: ' + res.statusCode);
    console.log('HEADERS: ' + JSON.stringify(res.headers));
});

req.write('{"some":"thing"}');
req.end();

Use as a server is as follows.

var http = require('http'),
    Ofuda = require('ofuda');


var ofuda = new Ofuda({headerPrefix:'Amz', hash: 'sha1', serviceLabel: 'AWS', debug: true});

var validateCredentials = function(requestAccessKeyId){
    return {accessKeyId: requestAccessKeyId, accessKeySecret: 'OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV'};
}

http.createServer(function (request, response) {

    if(ofuda.validateHttpRequest(request, validateCredentials)){
        response.writeHead(200);
        response.end('Success!');
    } else {
        response.writeHead(401)
        response.end('Authorization failed!');
    }

}).listen(8080);

console.log('Server running at http://127.0.0.1:8080/');

Contributing

In lieu of a formal style guide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using grunt.

Release History

(Nothing yet)

License

Copyright (c) 2012 Mark Wolfe
Licensed under the MIT license.

About

HMAC Authentication Module for NodeJS.

Resources

License

Stars

Watchers

Forks

Packages

No packages published