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.
Appar som finns utanför Azure, till exempel lokalt eller i ett datacenter från tredje part, bör använda ett huvudnamn för programtjänsten via Microsoft Entra ID för att autentisera till Azure tjänster. I följande avsnitt lär du dig:
- Så här registrerar du ett program med Microsoft Entra för att skapa ett huvudnamn för tjänsten.
- Så här tilldelar du roller till omfångsbehörigheter.
- Autentisera din appkod med hjälp av en tjänstehuvudprincip.
Genom att använda dedikerade huvudnamn för programtjänsten kan du följa principen om lägsta behörighet när du får åtkomst till Azure resurser. Begränsa behörigheter till de specifika kraven för appen under utvecklingen för att förhindra oavsiktlig åtkomst till Azure resurser som är avsedda för andra appar eller tjänster. Den här metoden hjälper dig också att undvika problem när du flyttar appen till produktion genom att se till att appen inte är överprivilegierad i utvecklingsmiljön.
Skapa en annan appregistrering för varje miljö där du är värd för appen. Du kan konfigurera miljöspecifika resursbehörigheter för varje huvudnamn för tjänsten och se till att en app som distribueras till en miljö inte kommer åt Azure resurser i en annan miljö.
Registrera appen i Azure
Huvudobjekt för programtjänsten skapas via en appregistrering i Azure med antingen Azure-portalen eller Azure CLI.
I Azure-portalen använder du sökfältet för att navigera till sidan App registrations.
På sidan App registrations väljer du + Ny registrering.
På sidan Registrera en applikation:
- För fältet Namn anger du ett beskrivande värde som innehåller appnamnet och målmiljön.
- För kontotyper som stödsväljer du endast Konton i den här organisationskatalogen (endast Microsoft Customer Led – Enskild klientorganisation)eller vilket alternativ som passar bäst för dina behov.
Välj Registrera för att registrera din app och skapa tjänstens huvudnamn.
På sidan Appregistrering för din app kopierar du Program-ID (klient) och Katalog-ID (hyresgäst), som du sedan klistrar in på en tillfällig plats för senare användning i appkodkonfigurationerna.
Välj Lägg till ett certifikat eller en hemlig för att konfigurera autentiseringsuppgifter för din app.
På sidan Certifikat och hemligheter väljer du + Ny klienthemlighet.
I Lägg till en klienthemlighet flyout-panelen som öppnas:
- För Beskrivning anger du värdet
Current. - För värdet Förfaller lämnar du det rekommenderade standardvärdet
180 days. - Välj Lägg till för att lägga till hemligheten.
- För Beskrivning anger du värdet
På sidan certifikat & hemligheter kopierar du egenskapen Value för klienthemligheten för användning i ett framtida steg.
Anmärkning
Värdet för klienthemlighet visas bara en gång efter att appregistreringen har skapats. Du kan lägga till fler klienthemligheter utan att ogiltigförklara den här klienthemligheten, men det går inte att visa det här värdet igen.
Tilldela roller till tjänstehuvudnamnet för applikationen
Bestäm sedan vilka roller (behörigheter) din app behöver på vilka resurser och tilldela dessa roller till tjänstens huvudnamn som du skapade. Roller kan tilldelas på resurs-, resursgrupps- eller prenumerationsnivån. Det här exemplet visar hur du tilldelar roller i resursgruppens omfång, eftersom de flesta appar grupperar alla sina Azure resurser i en enda resursgrupp.
I Azure-portalen går du till sidan Overview i resursgruppen som innehåller din app.
Välj Åtkomstkontroll (IAM) i det vänstra navigeringsfältet.
På sidan Åtkomstkontroll (IAM) väljer du + Lägg till och väljer sedan Lägg till rolltilldelning i den nedrullningsbara menyn. Sidan Lägg till rolltilldelning innehåller flera flikar för att konfigurera och tilldela roller.
På fliken Roll använder du sökrutan för att hitta den roll som du vill tilldela. Välj rollen och välj sedan Nästa.
På fliken Medlemmar:
- För värdet Tilldela åtkomst till väljer du Användare, grupp eller tjänstens huvudnamn .
- För värdet Medlemmar väljer du + Välj medlemmar för att öppna den utfällbara panelen Välj medlemmar .
- Sök efter tjänstens huvudnamn som du skapade tidigare och välj det från de filtrerade resultaten. Välj Välj för att välja gruppen och stäng den utfällbara panelen.
- Välj Granska + tilldela längst ned på fliken Medlemmar .
På fliken Granska + tilldela väljer du Granska + tilldela längst ned på sidan.
Ange appmiljövariablerna
Vid körning söker vissa autentiseringsuppgifter från Azure Identity Library, till exempel DefaultAzureCredential, EnvironmentCredential och ClientSecretCredential, efter information om tjänstens huvudnamn efter konvention i miljövariablerna. När du arbetar med Java kan du konfigurera miljövariabler på flera sätt, beroende på verktyg och miljö.
Oavsett vilken metod du väljer konfigurerar du följande miljövariabler för tjänstens huvudnamn:
-
AZURE_CLIENT_ID: Används för att identifiera den registrerade appen i Azure. -
AZURE_TENANT_ID: ID för Microsoft Entra klientorganisationen. -
AZURE_CLIENT_SECRET: Den hemliga autentiseringsuppgift som genererades för appen.
- Bash
- Visual Studio Code
- IntelliJ IDEA
- Windows
Ange följande miljövariabler. Ersätt platshållarvärdena med de faktiska värdena från appregistreringen:
export AZURE_CLIENT_ID="<your-client-id>"
export AZURE_TENANT_ID="<your-tenant-id>"
export AZURE_CLIENT_SECRET="<your-client-secret>"
För ett Java program som körs som en systembaserad tjänst på en produktionsserver definierar du miljövariablerna i en fil och refererar till den med direktivet EnvironmentFile i tjänstenhetsfilen:
[Unit]
Description=Java application service
After=network.target
[Service]
User=app-user
WorkingDirectory=/path/to/java-app
EnvironmentFile=/path/to/java-app/app-environment-variables
ExecStart=/usr/bin/java -jar app.jar
[Install]
WantedBy=multi-user.target
Miljöfilen ska innehålla en lista över miljövariabler med deras värden:
AZURE_CLIENT_ID=<your-client-id>
AZURE_TENANT_ID=<your-tenant-id>
AZURE_CLIENT_SECRET=<your-client-secret>
Autentisera mot Azure-tjänster från din app
I Azure Identity Library finns olika credentials – implementeringar av TokenCredential som stöder olika scenarier och Microsoft Entra autentiseringsflöden. Följande steg visar hur du använder ClientSecretCredential när du arbetar med serviceprincipaler lokalt och i produktion.
Implementera koden
Lägg till azure-identity-beroendet i din pom.xml-fil:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
Du får åtkomst till Azure tjänster med hjälp av specialiserade klientklasser från de olika Azure SDK klientbiblioteken. Följ dessa steg för alla Java kod som skapar ett Azure SDK klientobjekt i din app:
-
ClientSecretCredentialBuilderImportera klassen fråncom.azure.identitypaketet. - Skapa ett
ClientSecretCredential-objekt med hjälp avClientSecretCredentialBuildermedtenantId,clientIdochclientSecret. - Skicka instansen
ClientSecretCredentialtill Azure SDK-klientobjektverktygets metodcredential.
Ett exempel på den här metoden visas i följande kodsegment:
import com.azure.identity.ClientSecretCredential;
import com.azure.identity.ClientSecretCredentialBuilder;
import com.azure.storage.blob.BlobServiceClient;
import com.azure.storage.blob.BlobServiceClientBuilder;
String tenantId = System.getenv("AZURE_TENANT_ID");
String clientId = System.getenv("AZURE_CLIENT_ID");
String clientSecret = System.getenv("AZURE_CLIENT_SECRET");
ClientSecretCredential credential = new ClientSecretCredentialBuilder()
.tenantId(tenantId)
.clientId(clientId)
.clientSecret(clientSecret)
.build();
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint("https://<account-name>.blob.core.windows.net")
.credential(credential)
.buildClient();