Sdílet prostřednictvím


Získání existujícího servisního principálu

Seznam služebních identit

Pokud už máte existující instanční objekt, který chcete použít, tento krok vysvětluje, jak načíst existující instanční objekt.

Seznam služebních identit v tenantovi lze načíst pomocí az ad sp list. Ve výchozím nastavení tento příkaz vrátí prvních 100 principálů služeb pro váš tenant. Pokud chcete získat všechny služební identity tenanta, použijte parametr --all. Získání tohoto seznamu může trvat dlouho, proto doporučujeme seznam filtrovat jedním z následujících parametrů:

  • --display-namepožaduje instanční objekty, které mají předponu odpovídající zadanému názvu. Zobrazovaný název služebního principálu je hodnota nastavená parametrem --name během vytváření. Pokud jste při vytváření zástupce služby nenastavili --name, předpona názvu je azure-cli-.
  • --spn filtruje přesnou shodu názvu hlavní služby. Název služebního principu vždy začíná s https://. Pokud hodnota, kterou jste použili pro --name, nebyla URI, zobrazovaný název následuje https://.
  • --show-mine požaduje pouze služební identity vytvořené přihlášeným uživatelem.
  • --filter přebírá filtr OData a provádí filtrování na straně serveru. Tato metoda se doporučuje oproti filtrování na straně klienta s parametrem --query příkazového řádku. Informace o filtrech OData najdete v tématu Syntaxe výrazů OData pro filtry.

Informace vrácené pro objekty služby jsou podrobné. Pokud chcete získat pouze informace potřebné pro přihlášení, použijte řetězec [].{id:appId, tenant:appOwnerOrganizationId}dotazu . Tady je příklad, který získá přihlašovací informace pro všechny služební principály vytvořené aktuálně přihlášeným uživatelem:

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

Pokud pracujete ve velké organizaci s mnoha služebními principály, vyzkoušejte tyto příklady příkazů:

# 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

Důležité

Uživatele i nájemce je možné načíst pomocí příkazu az ad sp list a az ad sp show, ale tajné kódy ověřování ani metoda ověřování nejsou k dispozici. Tajné kódy pro certifikáty ve službě Azure Key Vault je možné načíst pomocí příkazu az keyvault secret show, ale ve výchozím nastavení se neukládají žádné další tajné kódy. Pokud zapomenete metodu ověřování nebo tajný klíč, obnovte přihlašovací údaje servisního principálu.

Vlastnosti služebního objektu

Když získáte seznam instančních objektů pomocí az ad sp list, existuje mnoho výstupních vlastností, na které můžete ve skriptu odkazovat.

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

Pomocí parametru --query načtěte a uložte vlastnosti service principalu do proměnných.

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

Další kroky

Teď, když jste se naučili, jak načíst existující principál služby, přejděte k dalšímu kroku, abyste se naučili, jak spravovat role principálu služby.