Anteckning
Å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.
I den här artikeln beskrivs alla Spring Cloud Azure-autentiseringsmetoder.
Autentisering och auktorisering med Microsoft Entra-ID
Med Microsoft Entra-ID kan du använda rollbaserad åtkomstkontroll i Azure (Azure RBAC) för att bevilja behörigheter till ett säkerhetsobjekt, som kan vara en användare eller ett huvudnamn för programtjänsten. När ett säkerhetsobjekt (en användare eller ett program) försöker komma åt en Azure-resurs, till exempel en Event Hubs-resurs, måste begäran auktoriseras. Med Microsoft Entra-ID är åtkomst till en resurs en tvåstegsprocess:
- Först autentiseras säkerhetsobjektets identitet och en OAuth 2.0-token returneras.
- Därefter skickas token som en del av en begäran till Azure-tjänsten för att auktorisera åtkomst till den angivna resursen.
Typer av autentiseringsuppgifter
Med Spring Cloud Azure kan du konfigurera olika typer av autentiseringsuppgifter, till exempel DefaultAzureCredential, WorkloadIdentityCredential, ManagedIdentityCredential, ClientSecretCredential, AzureCliCredentialoch så vidare.
StandardAzureCredential
              DefaultAzureCredential är lämpligt för de flesta scenarier där programmet är avsett att köras i Azure Cloud, eftersom det kombinerar följande autentiseringsuppgifter:
- Autentiseringsuppgifter som ofta används för att autentisera när de distribueras.
- Autentiseringsuppgifter som används för att autentisera i en utvecklingsmiljö.
Not
              DefaultAzureCredential är avsett att förenkla komma igång med Azure SDK genom att hantera vanliga scenarier med rimliga standardbeteenden. Om du vill ha mer kontroll eller om standardinställningarna inte stöder ditt scenario bör du använda andra typer av autentiseringsuppgifter.
              DefaultAzureCredential försöker autentisera via följande mekanismer i ordning:
               
              
            
- Miljö – DefaultAzureCredentialförsöker läsa kontoinformation som anges via miljövariabler och använda den för att autentisera.
- Hanterad identitet – Om programmet distribueras till en Azure-värd med hanterad identitet aktiverad försöker DefaultAzureCredentialautentisera med det kontot.
- Arbetsbelastningsidentitet – Om programmet distribueras till en virtuell dator (VM) försöker DefaultAzureCredentialautentisera med det kontot.
- Cache för delad token – Om du autentiserade via Visual Studio försöker DefaultAzureCredentialautentisera med det kontot.
- IntelliJ – Om du autentiserade via Azure Toolkit for IntelliJ försöker DefaultAzureCredentialautentisera med det kontot.
- Azure CLI – Om du autentiserade ett konto via kommandot Azure CLI az loginförsökerDefaultAzureCredentialautentisera med det kontot.
- Azure PowerShell – Om du autentiserade via Azure PowerShell försöker DefaultAzureCredentialautentisera med det kontot.
- Azure Developer CLI – Om du autentiserade via Azure Developer CLI försöker DefaultAzureCredentialautentisera med det kontot.
Dricks
Kontrollera att säkerhetsobjektet har tillräcklig behörighet för att få åtkomst till Azure-resursen. Mer information finns i Auktorisera åtkomst med Microsoft Entra-ID.
Not
Sedan Spring Cloud Azure AutoConfigure 4.1.0 måste du registrera en ThreadPoolTaskExecutor böna med namnet springCloudAzureCredentialTaskExecutor för att hantera alla trådar som skapats av Azure Identity. Namnet på varje tråd som hanteras av den här trådpoolen är prefixet med az-identity-. Denna ThreadPoolTaskExecutor böna är oberoende av den Executor böna som tillhandahålls av Spring Boot.
Hanterade identiteter
En vanlig utmaning är hanteringen av hemligheter och autentiseringsuppgifter som används för att skydda kommunikationen mellan olika komponenter som utgör en lösning. Hanterade identiteter eliminerar behovet av att hantera autentiseringsuppgifter. Hanterade identiteter tillhandahåller en identitet som program kan använda när de ansluter till resurser som stöder Microsoft Entra-autentisering. Program kan använda den hanterade identiteten för att hämta Microsoft Entra-token. Ett program kan till exempel använda en hanterad identitet för att komma åt resurser som Azure Key Vault där du kan lagra autentiseringsuppgifter på ett säkert sätt eller för att få åtkomst till lagringskonton.
Vi rekommenderar att du använder hanterad identitet i stället för att använda anslutningssträng eller nyckel i ditt program eftersom det är säkrare och sparar problem med att hantera hemligheter och autentiseringsuppgifter. I det här fallet kan DefaultAzureCredential bättre hantera scenariot att utveckla lokalt med hjälp av kontoinformation som lagras lokalt och sedan distribuera programmet till Azure Cloud och använda hanterad identitet.
Hanterade identitetstyper
Det finns två typer av hanterade identiteter:
- Systemtilldelade – Med vissa Azure-tjänster kan du aktivera en hanterad identitet direkt på en tjänstinstans. När du aktiverar en systemtilldelad hanterad identitet skapas en identitet i Microsoft Entra som är bunden till livscykeln för den tjänstinstansen. När resursen tas bort tar Azure automatiskt bort identiteten åt dig. Avsiktligt kan endast den Azure-resursen använda den här identiteten för att begära token från Microsoft Entra-ID.
- användartilldelade – Du kan också skapa en hanterad identitet som en fristående Azure-resurs. Du kan skapa en användartilldelad hanterad identitet och tilldela den till en eller flera instanser av en Azure-tjänst. Med användartilldelade hanterade identiteter hanteras identiteten separat från de resurser som använder den.
Not
När du använder en användartilldelad hanterad identitet kan du ange klient-ID:t via spring.cloud.azure.credential.client-id eller spring.cloud.azure.<azure-service>.credential.client-id. Du behöver inte konfiguration av autentiseringsuppgifter om du använder en systemtilldelad hanterad identitet.
Dricks
Kontrollera att säkerhetsobjektet har tillräcklig behörighet för att få åtkomst till Azure-resursen. Mer information finns i Auktorisera åtkomst med Microsoft Entra-ID.
Mer information om hanterad identitet finns i Vad är hanterade identiteter för Azure-resurser?.
Andra typer av autentiseringsuppgifter
Om du vill ha mer kontroll än vad som tillhandahålls av DefaultAzureCredential, eller om standardinställningarna inte stöder ditt scenario, bör du använda andra typer av autentiseringsuppgifter.
Autentisera med Microsoft Entra-ID
Om du vill ansluta program till resurser som stöder Microsoft Entra-autentisering kan du ange följande konfigurationer med prefixet spring.cloud.azure.credential eller spring.cloud.azure.<azure-service>.credential
I följande tabell visas autentiseringsegenskaper:
| Egenskap | Beskrivning | 
|---|---|
| klient-ID | Det klient-ID som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. | 
| klienthemlighet | Klienthemligheten som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. | 
| klient-certifikat-sökväg | Sökväg till en PEM-certifikatfil som ska användas när du utför autentisering med tjänstens huvudnamn med Azure. | 
| klient-certifikat-lösenord | Lösenordet för certifikatfilen. | 
| användarnamn | Användarnamnet som ska användas när du utför autentisering med användarnamn/lösenord med Azure. | 
| lösenord | Lösenordet som ska användas när du utför autentisering med användarnamn/lösenord med Azure. | 
| hanterad-identitet aktiverad | Om du vill aktivera hanterad identitet. | 
| token-credential-bean-name (token-credential-bean-name) | Bönnamnet av typen TokenCredentialatt använda när du utför autentisering med Azure. | 
Dricks
En lista över alla Spring Cloud Azure-konfigurationsegenskaper finns i Azure-konfigurationsegenskaper för Spring Cloud.
Programmet söker på flera platser för att hitta en tillgänglig autentiseringsuppgift. Varje Azure SDK-klientbyggarefabrik använder en anpassad böna av typen TokenCredential först om egenskapen token-credential-bean-name anges och återgår till att använda DefaultAzureCredential om inga egenskaper för autentiseringsuppgifter har konfigurerats.
Autentisera med en anpassad TokenCredential-böna
I följande exempel visas hur du definierar en anpassad TokenCredential böna för att utföra autentiseringen:
@Bean
TokenCredential myTokenCredential() {
    // Your concrete TokenCredential instance
}
spring.cloud.azure:
  credential:
    token-credential-bean-name: myTokenCredential
Autentisera med en systemtilldelad hanterad identitet
I följande exempel visas hur du autentiserar med hjälp av en systemtilldelad hanterad identitet:
spring.cloud.azure:
  credential:
    managed-identity-enabled: true
Autentisera med hjälp av en användartilldelad hanterad identitet
I följande exempel visas hur du autentiserar med hjälp av en användartilldelad hanterad identitet:
spring.cloud.azure:
  credential:
    managed-identity-enabled: true
    client-id: ${AZURE_CLIENT_ID}
Autentisera med tjänstens huvudnamn med klienthemlighet
I följande exempel visas hur du autentiserar med ett huvudnamn för tjänsten med en klienthemlighet:
spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    client-secret: ${AZURE_CLIENT_SECRET}
  profile:
    tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
Autentisera med tjänstens huvudnamn med klientcertifikat
I följande exempel visas hur du autentiserar med ett huvudnamn för tjänsten med ett PFX-klientcertifikat:
spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
    client-certificate-password: ${AZURE_CLIENT_CERTIFICATE_PASSWORD}
  profile:
    tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
I följande exempel visas hur du autentiserar med ett huvudnamn för tjänsten med klient-PEM-certifikat:
spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    client-certificate-path: ${AZURE_CLIENT_CERTIFICATE_PATH}
  profile:
    tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
Autentisera med hjälp av en användarautentiseringsuppgift
I följande exempel visas hur du autentiserar med hjälp av en användarautentiseringsuppgift:
spring.cloud.azure:
  credential:
    client-id: ${AZURE_CLIENT_ID}
    username: ${AZURE_USER_USERNAME}
    password: ${AZURE_USER_PASSWORD}
Autentisera en tjänst med en annan autentiseringsuppgift än andra
I följande exempel visas hur du autentiserar med Key Vault med ett annat huvudnamn för tjänsten. Det här exemplet konfigurerar programmet med två autentiseringsuppgifter: en systemtilldelad hanterad identitet och ett huvudnamn för tjänsten. Key Vault Secret-klienten använder tjänstens huvudnamn, men alla andra komponenter använder hanterad identitet i stället.
spring.cloud.azure:
  credential:
    managed-identity-enabled: true
  keyvault.secret:
    credential:
      client-id: ${AZURE_CLIENT_ID}
      client-secret: ${AZURE_CLIENT_SECRET}
    profile:
      tenant-id: <tenant>
Not
De värden som tillåts för tenant-id är: common, organizations, consumerseller klientorganisations-ID. Mer information om dessa värden finns i avsnittet Använt fel slutpunkt (personliga konton och organisationskonton) i Fel AADSTS50020 – Användarkonto från identitetsprovidern finns inte i klientorganisationen. Information om hur du konverterar din app för en klientorganisation finns i Konvertera enklientapp till flera klientorganisationer på Microsoft Entra-ID.
Auktorisera åtkomst med Microsoft Entra-ID
Auktoriseringssteget kräver att en eller flera Azure-roller tilldelas säkerhetsobjektet. De roller som har tilldelats ett säkerhetsobjekt avgör vilka behörigheter som huvudkontot har.
Dricks
En lista över alla inbyggda Azure-roller finns i inbyggda Azure-roller.
I följande tabell visas de inbyggda Azure-rollerna för att auktorisera åtkomst till Azure-tjänster som stöds i Spring Cloud Azure:
| Roll | Beskrivning | 
|---|---|
| Ägare av Конфиг� | Ger fullständig åtkomst till App Configuration-data. | 
| Läsare av Конфиг� | Tillåter läsåtkomst till App Configuration-data. | 
| Azure Event Hubs-dataägare | Ger fullständig åtkomst till Azure Event Hubs-resurser. | 
| Azure Event Hubs-datamottagare | Tillåter åtkomst till Azure Event Hubs-resurser. | 
| Avsändare av Azure Event Hubs-data | Tillåter sändningsåtkomst till Azure Event Hubs-resurser. | 
| Azure Service Bus-dataägare | Ger fullständig åtkomst till Azure Service Bus-resurser. | 
| Azure Service Bus- | Tillåter åtkomst till Azure Service Bus-resurser. | 
| Azure Service Bus-datasändare | Tillåter att du skickar åtkomst till Azure Service Bus-resurser. | 
| Storage Blob Data-ägare | Ger fullständig åtkomst till Azure Storage-blobcontainrar och data, inklusive tilldelning av POSIX-åtkomstkontroll. | 
| Läsare av lagringsblobdata | Läsa och lista Azure Storage-containrar och blobar. | 
| Dataläsare för lagringskö | Läsa och lista Azure Storage-köer och kömeddelanden. | 
| Redis Cache-deltagare | Hantera Redis-cacheminnen. | 
Not
När du använder Spring Cloud Azure Resource Manager för att hämta anslutningssträngarna för Event Hubs, Service Bus och Storage Queue, eller egenskaperna för Cache for Redis, tilldelar du den inbyggda Azure-rollen Contributor. Azure Cache for Redis är speciellt och du kan även tilldela Redis Cache Contributor roll för att hämta Redis-egenskaperna.
Not
En Key Vault-åtkomstprincip avgör om ett visst säkerhetsobjekt, nämligen en användare, ett program eller en användargrupp, kan utföra olika åtgärder på Key Vault-hemligheter, nycklar och certifikat. Du kan tilldela åtkomstprinciper med hjälp av Azure-portalen, Azure CLI eller Azure PowerShell. Mer information finns i Tilldela en key vault-åtkomstprincip.
Viktig
Azure Cosmos DB exponerar två inbyggda rolldefinitioner: Cosmos DB Built-in Data Reader och Cosmos DB Built-in Data Contributor. Stöd för rollhantering i Azure-portalen är dock inte tillgängligt ännu. Mer information om behörighetsmodellen, rolldefinitioner och rolltilldelning finns i Konfigurera rollbaserad åtkomstkontroll med Microsoft Entra-ID för ditt Azure Cosmos DB-konto.
Autentisera med SAS-token
Du kan också konfigurera tjänster för autentisering med signatur för delad åtkomst (SAS). 
              spring.cloud.azure.<azure-service>.sas-token är den egenskap som ska konfigureras. Använd till exempel spring.cloud.azure.storage.blob.sas-token för att autentisera till Storage Blob Service.
Autentisera med anslutningssträngar
Vissa Azure-tjänster stöder anslutningssträng för att tillhandahålla anslutningsinformation och autentiseringsuppgifter. Om du vill ansluta till dessa Azure-tjänster med hjälp av anslutningssträngen konfigurerar du bara spring.cloud.azure.<azure-service>.connection-string. Konfigurera till exempel spring.cloud.azure.eventhubs.connection-string för att ansluta till Event Hubs-tjänsten.