Share via


Een bestaande service-principal ophalen

Service-principals vermelden

Als u al een bestaande service-principal hebt die u wilt gebruiken, wordt in deze stap uitgelegd hoe u uw bestaande service-principal ophaalt.

Een lijst met de service-principals in een tenant kan worden opgehaald met az ad sp list. Deze opdracht retourneert standaard de eerste 100 service-principals voor uw tenant. Gebruik de --all parameter om alle service-principals van een tenant op te halen. Het ophalen van deze lijst kan lang duren, dus het is raadzaam dat u de lijst filtert met een van de volgende parameters:

  • --display-name vraagt service-principals aan die een voorvoegsel hebben dat overeenkomt met de opgegeven naam. De weergavenaam van een service-principal is de waarde die is ingesteld met de parameter tijdens het --name maken. Als u niet hebt ingesteld --name tijdens het maken van de service-principal, is azure-cli-het naamvoorvoegsel .
  • --spn filters op exact overeenkomende service-principal-namen. De naam van de service-principal begint altijd met https://. als de waarde die u hebt --name gebruikt geen URI was, wordt https:// deze waarde gevolgd door de weergavenaam.
  • --show-mine vraagt alleen service-principals aan die zijn gemaakt door de aangemelde gebruiker.
  • --filter neemt een OData-filter en voert filters aan de serverzijde uit. Deze methode wordt aanbevolen om clientzijde te filteren met de parameter van --query de CLI. Zie de syntaxis van de OData-expressie voor filters voor meer informatie over OData-filters.

De informatie die wordt geretourneerd voor service-principal-objecten is uitgebreid. Gebruik de querytekenreeks [].{id:appId, tenant:appOwnerOrganizationId}om alleen de gegevens op te halen die nodig zijn voor aanmelding. Hier volgt een voorbeeld van het ophalen van de aanmeldingsgegevens voor alle service-principals die zijn gemaakt door de momenteel aangemelde gebruiker:

az ad sp list --show-mine --query "[].{SPname:displayName, SPid:appId, tenant:appOwnerOrganizationId}" --output table

Als u in een grote organisatie met veel service-principals werkt, kunt u de volgende opdrachtvoorbeelden proberen:

# get service principals containing a keyword
az ad sp list --display-name mySearchWord --output table

# get service principals using an OData filter
az ad sp list --filter "displayname eq 'myExactServicePrincipalName'" --output json

# get a service principal having a certain servicePrincipalNames property value
az ad sp list --spn https://spURL.com

Belangrijk

De gebruiker en tenant kunnen beide worden opgehaald met az ad sp list en az ad sp show, maar verificatiegeheimen of de verificatiemethode is niet beschikbaar. Geheimen voor certificaten in Azure Key Vault kunnen worden opgehaald met az keyvault secret show, maar er worden standaard geen andere geheimen opgeslagen. Als u een verificatiemethode of geheim vergeet, stelt u de referenties van de service-principal opnieuw in.

Eigenschappen van service-principal

Wanneer u een lijst met service-principals krijgt die worden gebruikt az ad sp list, zijn er veel uitvoereigenschappen waarnaar u kunt verwijzen in uw script.

[
  {
    "accountEnabled": true,
    "addIns": [],
    "alternativeNames": [],
    "appDescription": null,
    "appDisplayName": "myServicePrincipalName",
    "appId": "00000000-0000-0000-0000-000000000000",
    "appOwnerOrganizationId": "00000000-0000-0000-0000-000000000000",
    "appRoleAssignmentRequired": false,
    "appRoles": [],
    "applicationTemplateId": null,
    "createdDateTime": null,
    "deletedDateTime": null,
    "description": null,
    "disabledByMicrosoftStatus": null,
    "displayName": "myServicePrincipalName",
    "homepage": "https://myURL.com",
    "id": "00000000-0000-0000-0000-000000000000",
    "info": {
      "logoUrl": null,
      "marketingUrl": null,
      "privacyStatementUrl": null,
      "supportUrl": null,
      "termsOfServiceUrl": null
    },
    "keyCredentials": [],
    "loginUrl": null,
    "logoutUrl": null,
    "notes": null,
    "notificationEmailAddresses": [],
    "oauth2PermissionScopes": [
      {
        "adminConsentDescription": "my admin description",
        "adminConsentDisplayName": "my admin display name",
        "id": "00000000-0000-0000-0000-000000000000",
        "isEnabled": true,
        "type": "User",
        "userConsentDescription": "my user description",
        "userConsentDisplayName": "my user display name",
        "value": "user_impersonation"
      }
    ],
    "passwordCredentials": [],
    "preferredSingleSignOnMode": null,
    "preferredTokenSigningKeyThumbprint": null,
    "replyUrls": [],
    "resourceSpecificApplicationPermissions": [],
    "samlSingleSignOnSettings": null,
    "servicePrincipalNames": [
      "00000000-0000-0000-0000-000000000000",
      "https://myURL.com"
    ],
    "servicePrincipalType": "Application",
    "signInAudience": null,
    "tags": [
      "WindowsAzureActiveDirectoryIntegratedApp"
    ],
    "tokenEncryptionKeyId": null,
    "verifiedPublisher": {
      "addedDateTime": null,
      "displayName": null,
      "verifiedPublisherId": null
    }
  }
]

Gebruik de --query parameter om eigenschappen van de service-principal op te halen en op te slaan in variabelen.

# Bash script
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)
userConsentDescr=$(az ad sp list --display-name myServicePrincipalName --query "[].{ucs:oauth2PermissionScopes.userConsentDescription[0]}" --output tsv)
echo "Using appId $spID in tenant $tenantID for $userConsentDescr"

Volgende stappenĀ 

Nu u hebt geleerd hoe u uw bestaande service-principal ophaalt, gaat u verder met de volgende stap om te leren hoe u uw service-principalrollen beheert.