Freigeben über


Abrufen eines vorhandenen Dienstprinzipals

Auflisten von Dienstprinzipalen

Wenn Sie bereits über einen vorhandenen Dienstprinzipal verfügen, den Sie verwenden möchten, wird in diesem Schritt erklärt, wie Sie Ihren vorhandenen Dienstprinzipal abrufen.

Mit az ad sp list kann eine Liste der Dienstprinzipale in einem Mandanten abgerufen werden. Dieser Befehl gibt standardmäßig die ersten 100 Dienstprinzipale für Ihren Mandanten zurück. Verwenden Sie zum Abrufen aller Dienstprinzipale eines Mandanten den Parameter --all. Da das Abrufen dieser Liste sehr lange dauern kann, wird empfohlen, die Liste mit einem der folgenden Parameter zu filtern:

  • --display-name fordert Dienstprinzipale mit einem Präfix an, das dem angegebenen Namen entspricht. Der Anzeigename eines Dienstprinzipals ist der Wert, der während der Erstellung mit dem Parameter --name festgelegt wird. Haben Sie --name während der Erstellung des Dienstprinzipals nicht festgelegt, lautet das Namenspräfix azure-cli-.
  • --spn filtert nach genauen Übereinstimmungen des Dienstprinzipalnamens. Der Dienstprinzipalname beginnt immer mit https://. Handelte es sich bei dem für --name verwendeten Wert nicht um einen URI, wird für diesen Wert https:// gefolgt vom Anzeigenamen verwendet.
  • --show-mine fordert nur Dienstprinzipale an, die vom angemeldeten Benutzer erstellt wurden.
  • --filter akzeptiert einen OData-Filter und führt die serverseitige Filterung aus. Diese Methode wird anstelle der clientseitigen Filterung mit dem Parameter --query der CLI empfohlen. Weitere Informationen zu OData-Filtern finden Sie unter OData-Ausdruckssyntax für Filter und Sortierklauseln in Azure Search.

Für Dienstprinzipalobjekte werden ausführliche Informationen zurückgegeben. Verwenden Sie die Abfragezeichenfolge [].{id:appId, tenant:appOwnerOrganizationId}, um nur die für die Anmeldung erforderlichen Informationen abzurufen. Hier finden Sie ein Beispiel für das Abrufen der Anmeldeinformationen für alle Dienstprinzipale, die von der/dem derzeit angemeldeten Benutzer*in erstellt wurden:

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

Wenn Sie in einer großen Organisation mit vielen Dienstprinzipalen arbeiten, probieren Sie die folgenden Befehlsbeispiele aus:

# 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

Wichtig

Der Benutzer und der Mandant können sowohl mit az ad sp list als auch mit az ad sp show abgerufen werden, aber Authentifizierungsgeheimnisse oder die Authentifizierungsmethode sind nicht verfügbar. Geheimnisse für Zertifikate in Azure Key Vault können mit az keyvault secret show abgerufen werden. Andere Geheimnisse werden jedoch nicht standardmäßig gespeichert. Wenn Sie eine Authentifizierungsmethode oder ein Geheimnis vergessen haben, setzen Sie die Anmeldeinformationen des Dienstprinzipals zurück.

Eigenschaften von Dienstprinzipalen

Wenn Sie mit az ad sp list eine Liste von Dienstprinzipalen erhalten, gibt es viele Ausgabeeigenschaften, auf die Sie in Ihrem Skript verweisen können.

[
  {
    "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
    }
  }
]

Verwenden Sie den --query-Parameter, um Dienstprinzipaleigenschaften in Variablen abzurufen und zu speichern.

# 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"

Nächste Schritte

Nachdem Sie nun gelernt haben, wie Sie Ihren vorhandenen Dienstprinzipal abrufen, erfahren Sie im nächsten Schritt, wie Sie Ihre Dienstprinzipalrollen verwalten.