Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Běžnou výzvou pro vývojáře je správa tajných kódů, přihlašovacích údajů, certifikátů a klíčů používaných pro zabezpečení komunikace mezi službami. Spravované identity v Azure eliminují potřebu, aby vývojáři tyto přihlašovací údaje zpracovávali ručně. Uzel MSAL podporuje získávání tokenů prostřednictvím služby spravované identity při použití s aplikacemi spuštěnými v Azure infrastruktuře, například:
-
Azure App Service (verze
2019-08-01rozhraní API a vyšší) - Virtuální počítače Azure
- Azure Arc
- Azure Cloud Shell
- Azure Service Fabric
- Azure Machine Learning
Úplný seznam najdete v Azure službách, které můžou používat spravované identity pro přístup k jiným službám.
Note
Knihovny MSAL založené na prohlížeči nenabízí spravovanou identitu, protože prohlížeč není hostovaný na Azure.
Kterou sadu SDK použít – Azure SDK nebo MSAL?
Uzel MSAL i Azure SDK umožňují získání tokenů prostřednictvím spravované identity. Interně Azure SDK používá uzel MSAL a poskytuje rozhraní API vyšší úrovně prostřednictvím svých DefaultAzureCredential a ManagedIdentityCredential abstrakcí.
Pokud už vaše aplikace používá některou ze sad SDK, pokračujte ve stejném použití sady SDK. Pokud píšete novou aplikaci a plánujete volat další Azure prostředky, použijte Azure SDK, protože tato sada SDK poskytuje lepší prostředí pro vývojáře tím, že aplikaci umožníte spouštět na privátních počítačích vývojářů, kde spravovaná identita neexistuje. Pokud potřebujete volat další následná webová rozhraní API, jako je Microsoft Graph nebo vaše vlastní webové rozhraní API, zvažte použití knihovny MSAL.
Pokud chcete začít a vidět Azure spravovanou identitu v akci, můžete použít některou z ukázek spravované identity uzlu MSAL.
Jak používat spravované identity
Vývojářům jsou k dispozici dva typy spravovaných identit – přiřazené systémem a přiřazené uživatelem. Další informace o rozdílech najdete v článku o typech spravovaných identit . MSAL Node podporuje získávání tokenů pomocí obou.
Než budete moct používat spravované identity z uzlu MSAL, musíte je povolit pro prostředky, které chtějí používat prostřednictvím Azure CLI nebo portálu Azure.
U identit přiřazených uživatelem i systémem můžou vývojáři používat ManagedIdentityApplication třídu.
Spravované identity přiřazené systémem
U spravovaných identit přiřazených systémem nemusí vývojář při vytváření instance ManagedIdentityApplicationpředávat žádné další informace, protože automaticky odvodí příslušná metadata o přiřazené identitě.
acquireToken se volá se zdrojem, pro který se má získat token, například 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);
spravované identity přiřazené uživatelem
U spravovaných identit přiřazených uživatelem musí vývojář při vytváření ManagedIdentityApplicationpředat ID klienta, úplný identifikátor prostředku nebo ID objektu spravované identity.
Stejně jako v případě spravovaných identit přiřazených systémem se acquireToken volá s prostředkem, pro který se má získat token.
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 ukládá tokeny ze spravované identity do mezipaměti v paměti. Neexistuje žádné vyřazení, ale paměť není problém, protože lze definovat omezený počet spravovaných identit. Rozšiřitelnost mezipaměti není v tomto scénáři podporovaná, protože tokeny by neměly být sdíleny mezi počítači.
Řešení běžných chyb
U neúspěšných požadavků obsahuje odpověď chyby ID korelace, které lze použít k další diagnostice a analýze protokolů. Mějte na paměti, že ID korelace vygenerovaná v MSAL nebo předané službě MSAL se liší od ID korelace vrácené v odpovědích na chyby serveru, protože SLUŽBA MSAL nemůže předat ID korelace koncovým bodům získání tokenu spravované identity.
ManagedIdentityError — Kód chyby: invalid_resource
Chybová zpráva: Zadaný prostředek je neplatná adresa URL.
Tato výjimka může znamenat, že prostředek, pro který se pokoušíte získat token, není podporovaný nebo je poskytnutý pomocí nesprávného formátu ID prostředku. Mezi příklady správných formátů ID prostředku patří https://management.azure.com/.default, https://management.azure.coma https://graph.microsoft.com.