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"), 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 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.