Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een veelvoorkomende uitdaging voor ontwikkelaars is het beheer van geheimen, referenties, certificaten en sleutels om communicatie tussen services te beveiligen. Beheerde identiteiten in Azure maken het voor ontwikkelaars overbodig om deze inloggegevens handmatig te beheren. MSAL Node ondersteunt het verkrijgen van tokens via de beheerde identiteitsservice wanneer deze worden gebruikt met toepassingen die worden uitgevoerd binnen Azure infrastructuur, zoals:
-
Azure App Service (API-versie
2019-08-01en hoger) - Azure VM's
- Azure Arc
- Azure Cloud Shell
- Azure Service Fabric
- Azure Machine Learning
Raadpleeg Azure services die beheerde identiteiten kunnen gebruiken voor toegang tot andere services voor een volledige lijst.
Note
MSAL-bibliotheken op basis van browsers bieden geen beheerde identiteit omdat de browser niet wordt gehost op Azure.
Welke SDK moet worden gebruikt: Azure SDK of MSAL?
Zowel MSAL Node als Azure SDK toestaan dat tokens worden verkregen via een beheerde identiteit. Intern maakt de Azure SDK gebruik van MSAL Node en biedt deze via de abstracties DefaultAzureCredential en ManagedIdentityCredential een API van een hoger niveau.
Als uw toepassing al een van de SDK's gebruikt, kunt u dezelfde SDK blijven gebruiken. Gebruik Azure SDK als u een nieuwe toepassing schrijft en andere Azure resources wilt aanroepen, omdat deze SDK een betere ontwikkelaarservaring biedt door de app in staat te stellen te worden uitgevoerd op privéontwikkelaarscomputers waar beheerde identiteit niet bestaat. Overweeg MSAL te gebruiken als u andere downstream-web-API's, zoals Microsoft Graph of uw eigen web-API, moet aanroepen.
Als u aan de slag wilt gaan en Azure Beheerde identiteit in actie wilt zien, kunt u een van de door MSAL Node beheerde identiteitsvoorbeelden gebruiken.
Beheerde identiteiten gebruiken
Er zijn twee typen beheerde identiteiten beschikbaar voor ontwikkelaars: door het systeem toegewezen en door de gebruiker toegewezen identiteiten. Meer informatie over de verschillen in het artikel beheerde identiteitstypen . MSAL Node ondersteunt het verkrijgen van tokens met beide methoden.
Voordat u beheerde identiteiten van MSAL Node kunt gebruiken, moet u ze inschakelen voor de resources die ze willen gebruiken via Azure CLI of de Azure-portal.
Ontwikkelaars kunnen de klasse gebruiken voor zowel door de gebruiker toegewezen als door het ManagedIdentityApplication systeem toegewezen identiteiten.
Door het systeem toegewezen beheerde identiteiten
Voor door het systeem toegewezen beheerde identiteiten hoeft de ontwikkelaar geen aanvullende informatie door te geven bij het maken van een exemplaar van ManagedIdentityApplication, omdat de relevante metagegevens over de toegewezen identiteit automatisch worden afgeleid.
acquireToken wordt aangeroepen met de resource om een token voor te verkrijgen, zoals 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);
Door de gebruiker toegewezen beheerde identiteiten
Voor door de gebruiker toegewezen beheerde identiteiten moet de ontwikkelaar de client-id, de volledige resource-id of de object-id van de beheerde identiteit doorgeven bij het maken ManagedIdentityApplication.
Net als in het geval van door het systeem toegewezen beheerde identiteiten wordt acquireToken aangeroepen met de resource waarvoor een token moet worden verkregen.
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 slaat tokens van een beheerde identiteit in het geheugen op. Er is geen verwijdering, maar geheugen is geen probleem omdat een beperkt aantal beheerde identiteiten kan worden gedefinieerd. De uitbreidbaarheid van de cache wordt in dit scenario niet ondersteund omdat tokens niet tussen computers mogen worden gedeeld.
Veelvoorkomende fouten oplossen
Voor mislukte aanvragen bevat het foutbericht een correlatie-id die kan worden gebruikt voor verdere diagnostische gegevens en logboekanalyse. Houd er rekening mee dat de correlatie-id's die zijn gegenereerd in MSAL of die zijn doorgegeven aan MSAL verschillen van de id die wordt geretourneerd in antwoorden op serverfouten, omdat MSAL de correlatie-id niet kan doorgeven aan eindpunten voor het verkrijgen van tokens voor beheerde identiteiten.
ManagedIdentityError — Foutcode: invalid_resource
Foutbericht: de opgegeven resource is een ongeldige URL.
Deze uitzondering kan betekenen dat de resource waarvoor u een token probeert te verkrijgen, niet wordt ondersteund of wordt geleverd met de verkeerde resource-id-indeling. Voorbeelden van juiste resource-id-indelingen zijn , https://management.azure.com/.defaulthttps://management.azure.comen https://graph.microsoft.com.