Partager via


Obtenir un principal de service existant

Répertorier les entités de service

Si vous disposez déjà d’un principal de service existant que vous souhaitez utiliser, cette étape explique comment récupérer votre principal de service existant.

Une liste des principaux de service d’un locataire peut être récupérée avec az ad sp list. Par défaut, cette commande retourne les 100 premiers principaux de service pour votre locataire. Pour obtenir tous les principaux de service d’un locataire, utilisez le paramètre --all. L’obtention de cette liste peut prendre beaucoup de temps. Il est donc recommandé de filtrer la liste avec l’un des paramètres suivants :

  • --display-name demande les principaux de service qui ont un préfixe qui correspond au nom fourni. Le nom d'affichage d’un principal de service est la valeur définie avec le paramètre --name lors de la création. Si vous n’avez pas défini --name lors de la création du principal de service, le préfixe de nom est azure-cli-.
  • --spn filtre la correspondance exacte du nom principal de service. Le nom du principal de service commence toujours par https://. si la valeur utilisée pour --name n’était pas un URI, cette valeur est https:// suivie du nom d'affichage.
  • --show-mine demande uniquement les principaux de service créés par l’utilisateur connecté.
  • --filter prend un filtre OData et effectue un filtrage côté serveur . Cette méthode est recommandée plutôt que le filtrage côté client avec le paramètre --query de l'interface en ligne de commande (CLI). Pour en savoir plus sur les filtres OData, consultez la syntaxe d’expression OData pour les filtres.

Les informations retournées pour les objets de service principal sont exhaustives. Pour obtenir uniquement les informations nécessaires pour la connexion, utilisez la chaîne [].{id:appId, tenant:appOwnerOrganizationId}de requête . Voici un exemple qui récupère les informations de connexion pour tous les objets principaux de service créés par l'utilisateur actuellement connecté :

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

Si vous travaillez dans une grande organisation avec de nombreux principaux de service, essayez ces exemples de commandes :

# 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

Important

L’utilisateur et le locataire peuvent être récupérés avec az ad sp list et az ad sp show, mais les secrets d’authentification ou la méthode d’authentification ne sont pas disponibles. Les secrets des certificats dans Azure Key Vault peuvent être récupérés avec az keyvault secret show, mais aucun autre secret n’est stocké par défaut. Si vous oubliez une méthode d’authentification ou un secret, réinitialisez les informations d’identification du principal de service.

Propriétés du service principal

Lorsque vous obtenez une liste de principaux de service à l’aide de az ad sp list, il existe de nombreuses propriétés en sortie que vous pouvez référencer dans votre 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
    }
  }
]

Utilisez le --query paramètre pour récupérer et stocker les propriétés du principal du service dans les variables.

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

Étapes suivantes

Maintenant que vous avez appris à récupérer votre principal de service existant, passez à l’étape suivante pour apprendre à gérer vos rôles de principal de service.