Ofuda
HMAC Authentication Module for NodeJS.
Install / Use
/learn @wolfeidau/OfudaREADME
ofuda 
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.
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。


