Condividi tramite


Ottieni un principale di servizio esistente

Elencare le entità servizio

Se si dispone già di un principal di servizio esistente che si desidera utilizzare, questo passaggio spiega come recuperare il principal di servizio esistente.

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

  • --display-name richiede entità servizio che abbiano un prefisso che corrisponde al nome specificato. Il nome visualizzato di un'entità del servizio è il valore impostato con il parametro --name durante la creazione. Se non è stato impostato --name durante la creazione dell'entità servizio, il prefisso del nome è azure-cli-.
  • --spn filtra in base alla corrispondenza esatta del nome principale del servizio. Il nome principale del 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 i principali servizi creati dall'utente autenticato.
  • --filter accetta un filtro OData ed esegue il filtraggio lato server. Questo metodo è consigliato rispetto al filtraggio lato client con il parametro --query dell'interfaccia della riga di comando. Per informazioni sui filtri OData, vedere Sintassi delle espressioni OData per i filtri.

Le informazioni restituite per gli oggetti di entità servizio principale sono verbose. Per ottenere solo le informazioni necessarie per l'accesso, usare la stringa [].{id:appId, tenant:appOwnerOrganizationId}di query . 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, reimposta le credenziali del principale del 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 parametro --query per recuperare e archiviare le proprietà del service principal 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 la tua entità servizio esistente, passa al passaggio successivo per imparare a gestire i ruoli dell'entità servizio.