From bc63473f7a15b2a59456e6e62cdc37ce2265e8a5 Mon Sep 17 00:00:00 2001 From: Robbie Ginsburg Date: Wed, 17 Jul 2024 13:35:05 -0400 Subject: [PATCH] Updated Managed Identity IMDS Sample --- .../Managed-Identity/Imds/DownstreamApi.ts | 31 +++++++++++++++---- .../Managed-Identity/Imds/package.json | 4 +-- 2 files changed, 27 insertions(+), 8 deletions(-) diff --git a/samples/msal-node-samples/Managed-Identity/Imds/DownstreamApi.ts b/samples/msal-node-samples/Managed-Identity/Imds/DownstreamApi.ts index 376e5726dd..cbdc07006e 100644 --- a/samples/msal-node-samples/Managed-Identity/Imds/DownstreamApi.ts +++ b/samples/msal-node-samples/Managed-Identity/Imds/DownstreamApi.ts @@ -5,7 +5,7 @@ export const getSecretFromKeyVault = ( keyVaultUri: string, secretName: string ): Promise => { - const customOptions: https.RequestOptions = { + const options: https.RequestOptions = { headers: { Authorization: `Bearer ${accessToken}`, }, @@ -15,7 +15,7 @@ export const getSecretFromKeyVault = ( https .get( `${keyVaultUri}secrets/${secretName}?api-version=7.2`, - customOptions, + options, (response) => { const data: Buffer[] = []; response.on("data", (chunk) => { @@ -23,14 +23,33 @@ export const getSecretFromKeyVault = ( }); response.on("end", () => { - // combine all received buffer streams into one buffer, and then into a string - const parsedData = Buffer.concat([...data]).toString(); - resolve(JSON.parse(parsedData).value); + // combine all received buffer streams into one buffer, convert it to a string, + // then parse it as a JSON object + let parsedData; + try { + parsedData = JSON.parse( + Buffer.concat([...data]).toString() + ); + } catch (error) { + return reject( + new Error( + "Unable to parse response from the Key Vault" + ) + ); + } + + if (parsedData.error) { + return reject( + new Error(`${parsedData.error.message}`) + ); + } + + return resolve(parsedData.value); }); } ) .on("error", (error) => { - reject(new Error(`Error: ${error.message}`)); + return reject(new Error(`${error.message}`)); }); }); }; diff --git a/samples/msal-node-samples/Managed-Identity/Imds/package.json b/samples/msal-node-samples/Managed-Identity/Imds/package.json index fd8ed7c3b0..f1f5159c34 100644 --- a/samples/msal-node-samples/Managed-Identity/Imds/package.json +++ b/samples/msal-node-samples/Managed-Identity/Imds/package.json @@ -4,10 +4,10 @@ "description": "Managed Identity for Imds", "scripts": { "build": "npx tsc", - "start:app": "npm run build && node build/index.js" + "start:app": "npm run build && node dist/index.js" }, "dependencies": { - "@azure/msal-node": "^2.7.0", + "@azure/msal-node": "^2.11.0", "dotenv": "^16.4.5" }, "devDependencies": {