Uzyskiwanie istniejącej jednostki usługi

Wyświetlanie listy jednostek usługi

Jeśli masz już istniejącą jednostkę usługi, której chcesz użyć, w tym kroku wyjaśniono, jak pobrać istniejącą jednostkę usługi.

Listę jednostek usługi w dzierżawie można pobrać za pomocą polecenia az ad sp list. Domyślnie to polecenie zwraca pierwsze 100 jednostek usługi dla dzierżawy. Aby uzyskać wszystkie jednostki usługi dzierżawy, użyj parametru --all . Pobranie tej listy może zająć dużo czasu, dlatego zaleca się filtrowanie listy przy użyciu jednego z następujących parametrów:

  • --display-nameżąda jednostek usługi, które mają prefiks zgodny z podaną nazwą. Nazwa wyświetlana jednostki usługi to wartość ustawiona za pomocą parametru --name podczas tworzenia. Jeśli podczas tworzenia jednostki usługi nie ustawiono --name wartości , prefiks nazwy to azure-cli-.
  • --spn filtruje dokładne dopasowanie nazwy głównej usługi. Nazwa główna usługi zawsze zaczyna się od https://. Jeśli wartość użyta dla --name elementu nie była identyfikatorem URI, po tej wartości następuje https:// nazwa wyświetlana.
  • --show-mine żąda tylko jednostek usługi utworzonych przez zalogowanego użytkownika.
  • --filter pobiera filtr OData i wykonuje filtrowanie po stronie serwera. Ta metoda jest zalecana w przypadku filtrowania po stronie klienta przy użyciu parametru interfejsu --query wiersza polecenia. Aby dowiedzieć się więcej o filtrach OData, zobacz Składnia wyrażeń OData dla filtrów.

Informacje zwracane dla obiektów jednostki usługi są pełne. Aby uzyskać tylko informacje niezbędne do logowania, użyj ciągu [].{id:appId, tenant:appOwnerOrganizationId}zapytania . Oto przykład, który pobiera informacje logowania dla wszystkich jednostek usługi utworzonych przez aktualnie zalogowanego użytkownika:

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

Jeśli pracujesz w dużej organizacji z wieloma jednostkami usługi, wypróbuj następujące przykłady poleceń:

# 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

Ważne

Użytkownik i dzierżawa mogą być pobierane za pomocą polecenia az ad sp list i az ad sp show, ale wpisy tajne uwierzytelniania lub metoda uwierzytelniania nie są dostępne. Wpisy tajne dla certyfikatów w usłudze Azure Key Vault można pobrać za pomocą polecenia az keyvault secret show, ale żadne inne wpisy tajne nie są domyślnie przechowywane. Jeśli zapomnisz metodę uwierzytelniania lub wpis tajny, zresetuj poświadczenia jednostki usługi.

Właściwości jednostki usługi

Po pobraniu listy jednostek usługi przy użyciu programu az ad sp lististnieje wiele właściwości wyjściowych, do których można się odwołać w skryscie.

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

Użyj parametru , --query aby pobrać i zapisać właściwości jednostki usługi w zmiennych.

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

Następne kroki 

Teraz, gdy wiesz już, jak pobrać istniejącą jednostkę usługi, przejdź do następnego kroku, aby dowiedzieć się, jak zarządzać rolami jednostki usługi.