UNPKG

pkgcloud

Version:

An infrastructure-as-a-service agnostic cloud library for node.js

66 lines (54 loc) 1.75 kB
/* * auth.js: Utilities for authenticating with multiple cloud providers * * (C) 2011-2012 Nodejitsu Inc. * */ var httpSignature = require('./http-signature'), awsSignature = require('./aws-signature'), azureSignature = require('./azure-signature'), utile = require('utile'); var auth = exports; auth.authToken = function authToken(req) { req.headers = req.headers || {}; req.headers['x-auth-token'] = this.config.authToken; }; auth.basic = function basicAuth(req) { var credentials = this.credentials || this.config.username + ':' + this.config.password; req.headers = req.headers || {}; req.headers.authorization = [ 'Basic', utile.base64.encode(credentials) ].join(' '); }; // Add Account number for requests to rackspace API auth.accountId = function (req) { req.headers = req.headers || {}; req.headers['x-auth-project-id'] = this.config.accountNumber; }; function signatureGenerator(sign) { return function signatureAuth(req, keys) { keys = keys || this.config; sign.call(this, req, { key: keys.key, keyId: keys.keyId }); }; }; function azureSignatureGenerator(sign) { return function azureSignatureGenerator(req, keys) { keys = keys || this.azureKeys; sign.call(this, req, keys); }; }; auth.httpSignature = signatureGenerator(httpSignature.sign); auth.amazon = { bodySignature: signatureGenerator(awsSignature.signBody), headersSignature: signatureGenerator(awsSignature.signHeaders) }; auth.azure = { managementSignature: azureSignatureGenerator(azureSignature.managementSignature), storageSignature: azureSignatureGenerator(azureSignature.storageSignature), tablesSignature: azureSignatureGenerator(azureSignature.tablesSignature) };