UNPKG

@azure/app-configuration

Version:
36 lines 2 kB
"use strict"; // Copyright (c) Microsoft Corporation. // Licensed under the MIT License. Object.defineProperty(exports, "__esModule", { value: true }); exports.appConfigKeyCredentialPolicy = appConfigKeyCredentialPolicy; const core_util_1 = require("@azure/core-util"); const logger_js_1 = require("./logger.js"); /** * Create an HTTP pipeline policy to authenticate a request * using an `AzureKeyCredential` for AppConfig. */ function appConfigKeyCredentialPolicy(credential, secret) { return { name: "AppConfigKeyCredentialPolicy", async sendRequest(request, next) { const verb = request.method; const utcNow = new Date().toUTCString(); logger_js_1.logger.info("[appConfigKeyCredentialPolicy] Computing SHA-256 from the request body"); const contentHash = await (0, core_util_1.computeSha256Hash)(request.body?.toString() || "", "base64"); const signedHeaders = "x-ms-date;host;x-ms-content-sha256"; const url = new URL(request.url); const query = url.search; const urlPathAndQuery = query ? `${url.pathname}${query}` : url.pathname; const stringToSign = `${verb}\n${urlPathAndQuery}\n${utcNow};${url.host};${contentHash}`; logger_js_1.logger.info("[appConfigKeyCredentialPolicy] Computing a SHA-256 Hmac signature"); const signature = await (0, core_util_1.computeSha256Hmac)(secret, stringToSign, "base64"); request.headers.set("x-ms-date", utcNow); request.headers.set("x-ms-content-sha256", contentHash); // Syntax for Authorization header // Reference - https://learn.microsoft.com/azure/azure-app-configuration/rest-api-authentication-hmac#syntax request.headers.set("Authorization", `HMAC-SHA256 Credential=${credential}&SignedHeaders=${signedHeaders}&Signature=${signature}`); return next(request); }, }; } //# sourceMappingURL=appConfigCredential.js.map