Condividi tramite


Ottenere un'entità servizio esistente

Elencare le entità servizio

Se si dispone già di un'entità servizio esistente che si vuole usare, questo passaggio spiega come recuperare l'entità servizio esistente.

È possibile recuperare un elenco delle entità servizio presenti in un tenant con az ad sp list. Per impostazione predefinita, questo comando restituisce le prime 100 entità servizio per il tenant. Per ottenere tutte le entità servizio di un tenant, usare il --all parametro . L'acquisizione di questo elenco può richiedere molto tempo, pertanto è consigliabile filtrare l'elenco con uno dei parametri seguenti:

  • --display-name richiede entità di servizio che hanno un prefisso corrispondente al nome specificato. Il nome visualizzato di un'entità servizio è il valore impostato con il parametro --name durante la creazione. Se --name non è stato impostato durante la creazione dell'entità servizio, il prefisso del nome è azure-cli-.
  • --spn filtra in base alla corrispondenza esatta del nome dell'entità servizio. Il nome dell'entità servizio inizia sempre con https://. Se il valore usato per --name non era un URI, questo valore è https:// seguito dal nome visualizzato.
  • --show-mine richiede solo entità servizio create dall'utente che ha eseguito l'accesso.
  • --filter accetta un filtro OData ed esegue il filtro sul lato server. Questo metodo è consigliato per filtrare il lato client con il parametro dell'interfaccia della riga di --query comando. Per informazioni sui filtri OData, vedere Sintassi delle espressioni OData per filtri e ordinamento.

Le informazioni restituite per gli oggetti dell'entità servizio sono dettagliate. Per ottenere solo le informazioni necessarie per l'accesso, usare la stringa di query [].{id:appId, tenant:appOwnerOrganizationId}. Ecco un esempio che ottiene le informazioni di accesso per tutte le entità servizio create dall'utente attualmente connesso:

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

Se si lavora in un'organizzazione di grandi dimensioni con molte entità servizio, provare questi esempi di comando:

# 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

Importante

L'utente e il tenant possono essere recuperati con az ad sp list e az ad sp show, ma i segreti di autenticazione o il metodo di autenticazione non sono disponibili. I segreti per i certificati in Azure Key Vault possono essere recuperati con az keyvault secret show, ma per impostazione predefinita non vengono archiviati altri segreti. Se si dimentica un metodo di autenticazione o un segreto, reimpostare le credenziali dell'entità servizio.

Proprietà dell'entità servizio

Quando si ottiene un elenco di entità servizio usando az ad sp list, sono disponibili molte proprietà di output a cui è possibile fare riferimento nello 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
    }
  }
]

Usare il --query parametro per recuperare e archiviare le proprietà dell'entità servizio nelle variabili.

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

Passaggi successivi

Dopo aver appreso come recuperare l'entità servizio esistente, procedere con il passaggio successivo per informazioni su come gestire i ruoli dell'entità servizio.