@azure/core-amqp
Version:
Common library for amqp based azure sdks like @azure/event-hubs.
89 lines (88 loc) • 3.15 kB
JavaScript
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
var tokenProvider_exports = {};
__export(tokenProvider_exports, {
SasTokenProviderImpl: () => SasTokenProviderImpl,
createSasTokenProvider: () => createSasTokenProvider
});
module.exports = __toCommonJS(tokenProvider_exports);
var import_core_auth = require("@azure/core-auth");
var import_hmacSha256 = require("../util/hmacSha256.js");
function createSasTokenProvider(data) {
if ((0, import_core_auth.isNamedKeyCredential)(data) || (0, import_core_auth.isSASCredential)(data)) {
return new SasTokenProviderImpl(data);
} else if ("sharedAccessKeyName" in data && "sharedAccessKey" in data) {
return new SasTokenProviderImpl({ name: data.sharedAccessKeyName, key: data.sharedAccessKey });
} else {
return new SasTokenProviderImpl({ signature: data.sharedAccessSignature });
}
}
class SasTokenProviderImpl {
/**
* Property used to distinguish TokenProvider from TokenCredential.
*/
get isSasTokenProvider() {
return true;
}
/**
* The SASCredential containing the key name and secret key value.
*/
_credential;
/**
* Initializes a new instance of SasTokenProvider
* @param credential - The source `NamedKeyCredential` or `SASCredential`.
*/
constructor(credential) {
this._credential = credential;
}
/**
* Gets the sas token for the specified audience
* @param audience - The audience for which the token is desired.
*/
async getToken(audience) {
if ((0, import_core_auth.isNamedKeyCredential)(this._credential)) {
return createToken(
this._credential.name,
this._credential.key,
Math.floor(Date.now() / 1e3) + 3600,
audience
);
} else {
return {
token: this._credential.signature,
expiresOnTimestamp: 0
};
}
}
}
async function createToken(keyName, key, expiry, audience) {
audience = encodeURIComponent(audience);
keyName = encodeURIComponent(keyName);
const stringToSign = audience + "\n" + expiry;
const sig = await (0, import_hmacSha256.signString)(key, stringToSign);
return {
token: `SharedAccessSignature sr=${audience}&sig=${sig}&se=${expiry}&skn=${keyName}`,
expiresOnTimestamp: expiry
};
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
SasTokenProviderImpl,
createSasTokenProvider
});
//# sourceMappingURL=tokenProvider.js.map