Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
microsoft
GitHub Repository: microsoft/vscode
Path: blob/main/build/azure-pipelines/common/getPublishAuthTokens.js
3520 views
1
"use strict";
2
Object.defineProperty(exports, "__esModule", { value: true });
3
exports.getAccessToken = getAccessToken;
4
const msal_node_1 = require("@azure/msal-node");
5
function e(name) {
6
const result = process.env[name];
7
if (typeof result !== 'string') {
8
throw new Error(`Missing env: ${name}`);
9
}
10
return result;
11
}
12
async function getAccessToken(endpoint, tenantId, clientId, idToken) {
13
const app = new msal_node_1.ConfidentialClientApplication({
14
auth: {
15
clientId,
16
authority: `https://login.microsoftonline.com/${tenantId}`,
17
clientAssertion: idToken
18
}
19
});
20
const result = await app.acquireTokenByClientCredential({ scopes: [`${endpoint}.default`] });
21
if (!result) {
22
throw new Error('Failed to get access token');
23
}
24
return {
25
token: result.accessToken,
26
expiresOnTimestamp: result.expiresOn.getTime(),
27
refreshAfterTimestamp: result.refreshOn?.getTime()
28
};
29
}
30
async function main() {
31
const cosmosDBAccessToken = await getAccessToken(e('AZURE_DOCUMENTDB_ENDPOINT'), e('AZURE_TENANT_ID'), e('AZURE_CLIENT_ID'), e('AZURE_ID_TOKEN'));
32
const blobServiceAccessToken = await getAccessToken(`https://${e('VSCODE_STAGING_BLOB_STORAGE_ACCOUNT_NAME')}.blob.core.windows.net/`, process.env['AZURE_TENANT_ID'], process.env['AZURE_CLIENT_ID'], process.env['AZURE_ID_TOKEN']);
33
console.log(JSON.stringify({ cosmosDBAccessToken, blobServiceAccessToken }));
34
}
35
if (require.main === module) {
36
main().then(() => {
37
process.exit(0);
38
}, err => {
39
console.error(err);
40
process.exit(1);
41
});
42
}
43
//# sourceMappingURL=getPublishAuthTokens.js.map
44