Dela via


Använd en Azure service principal med lösenordsbaserad autentisering

När du skapar ett huvudnamn för tjänsten väljer du den typ av inloggningsautentisering som används. Det finns två typer av autentisering som är tillgängliga för Azure-tjänstens huvudnamn: lösenordsbaserad autentisering och certifikatbaserad autentisering. Lösenordsbaserad autentisering är bra att använda när du lär dig mer om tjänstens huvudnamn, men vi rekommenderar att du använder certifikatbaserad autentisering för program.

Det här steget i självstudien beskriver hur du använder ett lösenord för tjänstens huvudnamn för att komma åt en Azure-resurs.

Skapa ett huvudnamn för tjänsten som innehåller ett lösenord

Standardbeteende för az ad sp create-for-rbac är att skapa ett tjänstehuvudnamn med ett slumpmässigt lösenord.

az ad sp create-for-rbac --name myServicePrincipalName \
                         --role reader \
                         --scopes /subscriptions/mySubscriptionId/resourceGroups/myResourceGroupName

Utdatakonsol:

{
  "appId": "myServicePrincipalId",
  "displayName": "myServicePrincipalName",
  "password": "myServicePrincipalPassword",
  "tenant": "myOrganizationTenantId"
}

Utdata för en tjänstprincipal med lösenordsautentisering inkluderar password nyckeln. Se till att du kopierar det här värdet – det kan inte hämtas. Om du förlorar lösenordet, återställ tjänstens huvudautentiseringsuppgifter.

Logga in med ett huvudnamn för tjänsten med ett lösenord

Testa det nya service principalens autentiseringsuppgifter och behörigheter genom att logga in. För att logga in med ett tjänstens huvudobjekt behöver du appId (även kallat "tjänstehuvudets ID", "användarnamn" eller "tilldelare"), tenant och password. Här är ett exempel:

az login --service-principal \
         --username myServicePrincipalId \
         --password myServicePrincipalPassword \
         --tenant myOrganizationTenantID

Om du inte känner till din appId eller --tenant, kan du hämta den med hjälp av az ad sp list kommandot.

spID=$(az ad sp list --display-name myServicePrincipalName --query "[].{spID:appId}" --output tsv)
tenantID=$(az ad sp list --display-name myServicePrincipalName --query "[].{tenant:appOwnerOrganizationId}" --output tsv)
echo "Using appId $spID in tenant $tenantID"

az login --service-principal \
         --username $spID \
         --password {paste your password here} \
         --tenant $tenantID

Om du testar i en organisation som kräver tvåfaktorautentisering får du felmeddelandet "... Interaktiv autentisering krävs..." visas. Alternativt kan du använda ett certifikat eller hanterade identiteter.

Viktigt!

Om du vill undvika att visa lösenordet i konsolen och använder az login interaktivt använder du read -s kommandot i bash.

read -sp "Azure password: " AZ_PASS && echo && az login --service-principal -u <app-id> -p $AZ_PASS --tenant <tenant>

Använd cmdleten i Get-Credential PowerShell.

$AzCred = Get-Credential -UserName <app-id>
az login --service-principal -u $AzCred.UserName -p $AzCred.GetNetworkCredential().Password --tenant <tenant>

Nästa steg

Nu när du har lärt dig hur du arbetar med tjänstens huvudnamn med hjälp av ett lösenord går du vidare till nästa steg för att lära dig hur du använder tjänstens huvudnamn med certifikatbaserad autentisering.