Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Att hantera hemligheter, autentiseringsuppgifter, certifikat och nycklar som används för att skydda kommunikationen mellan olika tjänster kan vara en utmaning för utvecklare. Hanterade identiteter i Azure eliminera behovet av att utvecklare hanterar dessa autentiseringsuppgifter manuellt. MSAL Node har stöd för att hämta token via den hanterade identitetstjänsten när den används med program som körs i Azure infrastruktur, till exempel:
-
Azure App Service (API-version
2019-08-01och senare) - Virtuella datorer i Azure
- Azure Arc
- Azure Cloud Shell
- Azure Service Fabric
- Azure Machine Learning
En fullständig lista finns i Azure tjänster som kan använda hanterade identiteter för att få åtkomst till andra tjänster.
Note
Webbläsarbaserade MSAL-bibliotek erbjuder inte hanterad identitet eftersom webbläsaren inte finns på Azure.
Vilken SDK ska användas – Azure SDKs eller MSAL?
Både MSAL Node och Azure SDKs gör det möjligt att hämta token via hanterad identitet. Internt använder Azure SDKs MSAL Node och tillhandahåller ett API på högre nivå via dess DefaultAzureCredential och ManagedIdentityCredential abstraktioner.
Om ditt program redan använder någon av SDK:erna fortsätter du att använda samma SDK. Använd Azure SDKs om du skriver ett nytt program och planerar att anropa andra Azure resurser, eftersom den här SDK:n ger en bättre utvecklarupplevelse genom att låta appen köras på privata utvecklardatorer där den hanterade identiteten inte finns. Överväg att använda MSAL om du behöver anropa andra underordnade webb-API:er som Microsoft Graph eller ditt eget webb-API.
Om du vill komma igång och se Azure hanterad identitet i praktiken kan du använda ett av msal node-hanterade identitetsexempel.
Så här använder du hanterade identiteter
Det finns två typer av hanterade identiteter som är tillgängliga för utvecklare – systemtilldelade och användartilldelade. Du kan lära dig mer om skillnaderna i artikeln Hanterade identitetstyper . MSAL Node stöder att hämta token med båda metoderna.
Innan du kan använda hanterade identiteter från MSAL Node måste du aktivera dem för de resurser som de vill använda via Azure CLI eller Azure-portalen.
Utvecklare kan använda ManagedIdentityApplication klassen för både användartilldelade och systemtilldelade identiteter.
Systemtilldelade hanterade identiteter
För systemtilldelade hanterade identiteter behöver utvecklaren inte skicka någon ytterligare information när en instans av ManagedIdentityApplication skapas, eftersom den automatiskt fastställer relevanta metadata för den tilldelade identiteten.
acquireToken anropas med resursen för att hämta en token för, till exempel https://management.azure.com.
import {
ManagedIdentityApplication,
ManagedIdentityConfiguration,
ManagedIdentityRequestParams,
NodeSystemOptions,
LoggerOptions,
LogLevel,
AuthenticationResult
} from "@azure/msal-node";
const config: ManagedIdentityConfiguration = {
system: {
loggerOptions: {
logLevel: LogLevel.Verbose,
} as LoggerOptions,
} as NodeSystemOptions,
};
const systemAssignedManagedIdentityApplication: ManagedIdentityApplication =
new ManagedIdentityApplication(config);
const managedIdentityRequestParams: ManagedIdentityRequestParams = {
resource: "https://management.azure.com",
};
const response: AuthenticationResult =
await systemAssignedManagedIdentityApplication.acquireToken(
managedIdentityRequestParams
);
console.log(response);
Användartilldelade hanterade identiteter
För användartilldelade hanterade identiteter måste utvecklaren skicka antingen klient-ID, fullständig resursidentifierare eller objekt-ID för den hanterade identiteten när du skapar ManagedIdentityApplication.
Precis som i fallet med systemtilldelade hanterade identiteter anropas acquireToken med den resurs som en åtkomsttoken ska hämtas för.
import {
ManagedIdentityApplication,
ManagedIdentityConfiguration,
ManagedIdentityIdParams,
ManagedIdentityRequestParams,
NodeSystemOptions,
LoggerOptions,
LogLevel,
AuthenticationResult
} from "@azure/msal-node";
const managedIdentityIdParams: ManagedIdentityIdParams = {
userAssignedClientId: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
};
const config: ManagedIdentityConfiguration = {
managedIdentityIdParams,
system: {
loggerOptions: {
logLevel: LogLevel.Verbose,
} as LoggerOptions,
} as NodeSystemOptions,
};
const userAssignedManagedIdentityApplication: ManagedIdentityApplication =
new ManagedIdentityApplication(config);
const managedIdentityRequestParams: ManagedIdentityRequestParams = {
resource: "https://management.azure.com",
};
const response: AuthenticationResult =
await userAssignedManagedIdentityApplication.acquireToken(
managedIdentityRequestParams
);
console.log(response);
Caching
MSAL Node lagrar token från den hanterade identiteten i minnet. Det finns ingen borttagning, men minne är inte ett problem eftersom ett begränsat antal hanterade identiteter kan definieras. Utökningsbarhet för cache stöds inte i det här scenariot eftersom token inte ska delas mellan datorer.
Felsökning av vanliga fel
För misslyckade begäranden innehåller felsvaret ett korrelations-ID som kan användas för ytterligare diagnostik och logganalys. Tänk på att korrelations-ID:t som genereras i MSAL eller som skickas till MSAL skiljer sig från det som returneras i serverfelsvar, eftersom MSAL inte kan skicka korrelations-ID:t till slutpunkter för anskaffning av hanterad identitetstoken.
ManagedIdentityError — Felkod: invalid_resource
Felmeddelande: Den angivna resursen är en ogiltig URL.
Det här undantaget kan innebära att resursen som du försöker hämta en token för antingen inte stöds eller tillhandahålls med fel resurs-ID-format. Exempel på korrekta resurs-ID-format är https://management.azure.com/.default, https://management.azure.comoch https://graph.microsoft.com.