Använda ett Huvudnamn för Azure-tjänsten med lösenordsbaserad autentisering

När du skapar ett huvudnamn för tjänsten kan du välja vilken typ av inloggningsinformation 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

Standardbeteendet för az ad sp create-for-rbac är att skapa ett huvudnamn för tjänsten 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 tjänstens huvudnamn med lösenordsautentisering innehåller password nyckeln. Se till att du kopierar det här värdet – det kan inte hämtas. Om du tappar bort lösenordet måste du återställa autentiseringsuppgifterna för tjänstens huvudnamn.

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

Testa det nya tjänsthuvudnamnets autentiseringsuppgifter och behörigheter genom att logga in. Om du vill logga in med tjänstens huvudnamn behöver appId du (även kallat "tjänstens huvudnamns-ID", "användarnamn" eller "tilldelare"), tenantoch 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 --tenantkan du hämta den med hjälp az ad sp list av 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.