Forked from cmatskas/DocDBAuthHeaderWithNode.js
Last active
October 19, 2018 13:18
-
-
Save ljaniszewski/4c0eb9fbf89cc8f79ff445a69a8be368 to your computer and use it in GitHub Desktop.
DocumentDB RestAPI AuthHeader
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var crypto = require("crypto"); | |
var moment = require("moment"); | |
let masterKey = "<your documentDB read&write key>"; | |
let dateInRfc7231Format = moment().utc().format("ddd, DD MMM YYYY HH:mm:ss"); | |
let dateWithTimeZone = dateInRfc7231Format + " GMT"; | |
console.debug(dateWithTimeZone); | |
// list all databases | |
//let result = getAuthorizationTokenUsingMasterKey("GET", "", "dbs", dateWithTimeZone, masterKey); | |
// list all collections within a db | |
//let result = getAuthorizationTokenUsingMasterKey("GET", "dbs/demodb", "colls", dateWithTimeZone, masterKey); | |
// create new collection | |
//let result = getAuthorizationTokenUsingMasterKey("POST", "dbs/demodb", "colls", dateWithTimeZone, masterKey); | |
// list all documents | |
//let result = getAuthorizationTokenUsingMasterKey("GET", "dbs/demodb/colls/student", "docs", dateWithTimeZone, masterKey); | |
let result = getAuthorizationTokenUsingMasterKey("POST", "dbs/demodb/colls/student", "docs", dateWithTimeZone, masterKey); | |
console.debug(result); | |
function getAuthorizationTokenUsingMasterKey(verb, resourceId, resourceType, date, masterKey) { | |
var key = new Buffer(masterKey, "base64"); | |
var text = (verb || "").toLowerCase() + "\n" + | |
(resourceType || "").toLowerCase() + "\n" + | |
(resourceId || "") + "\n" + | |
(date || "").toLowerCase() + "\n" + | |
"" + "\n"; | |
var body = new Buffer(text, "utf8"); | |
var signature = crypto.createHmac("sha256", key).update(body).digest("base64"); | |
var MasterToken = "master"; | |
var TokenVersion = "1.0"; | |
return encodeURIComponent("type=" + MasterToken + "&ver=" + TokenVersion + "&sig=" + signature); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment