Utiliser l’authentification d’application uniquement avec le kit de développement logiciel (SDK) Microsoft Graph PowerShellUse app-only authentication with the Microsoft Graph PowerShell SDK

Le kit de développement logiciel (SDK) PowerShell prend en charge deux types d’authentification : l' accès déléguéet l' accès d’application uniquement.The PowerShell SDK supports two types of authentication: delegated access, and app-only access. Ce guide se concentre sur la configuration nécessaire pour activer l’accès de l’application uniquement.This guide will focus on the configuration needed to enable app-only access.

Important

L’accès d’application uniquement accorde des autorisations directement à une application, et demande à un administrateur de consentir aux étendues d’autorisation requises.App-only access grants permissions directly to an application, and requires an administrator to consent to the required permission scopes. Pour plus d’informations sur l’accès de l’application uniquement, voir Microsoft Identity Platform et le flux des informations d’identification du client OAuth 2,0.For more details on app-only access, see Microsoft identity platform and the OAuth 2.0 client credentials flow.

Passons en revue la configuration de l’accès d’application uniquement pour un script simple permettant de répertorier les utilisateurs et les groupes dans votre client Microsoft 365.Let's walk through configuring app-only access for a simple script to list users and groups in your Microsoft 365 tenant.

ConfigurationConfiguration

Avant de pouvoir utiliser l’accès d’application uniquement avec le kit de développement logiciel (SDK), vous avez besoin des éléments suivants.Before you can use app-only access with the SDK, you need the following.

  • Un certificat à utiliser comme informations d’identification pour l’application.A certificate to use as a credential for the application. Il peut s’agir d’un certificat auto-signé ou d’un certificat d’une autorité.This can be a self-signed certificate or a certificate from an authority.
  • Vous devez inscrire une application dans Azure ad, la configurer avec les étendues d’autorisation dont votre scénario a besoin et partager la clé publique de votre certificat.You must register an application in Azure AD, configure it with the permission scopes your scenario requires, and share the public key for your certificate.

CertificatCertificate

Vous aurez besoin d’un certificat X. 509 installé dans le magasin approuvé de votre utilisateur sur l’ordinateur sur lequel vous exécuterez le script.You will need an X.509 certificate installed in your user's trusted store on the machine where you will run the script. Vous aurez également besoin de la clé publique du certificat exportée au format. cer,. PEM ou. CRT.You'll also need the certificate's public key exported in .cer, .pem, or .crt format. Vous aurez besoin de la valeur de l’objet du certificat.You'll need the value of the certificate subject.

Inscription de l’applicationRegister the application

Vous pouvez enregistrer l’application dans le portail Azure Active Directoryou à l’aide de PowerShell.You can register the application either in the Azure Active Directory portal, or using PowerShell.

  1. Ouvrez un navigateur et accédez au Centre d’administration Azure Active Directory et connectez-vous à l’aide d’un administrateur de l’organisation client Microsoft 365.Open a browser and navigate to the Azure Active Directory admin center and login using an Microsoft 365 tenant organization admin.

  2. Sélectionnez Azure Active Directory dans le volet de navigation gauche, puis sélectionnez Inscriptions d’applications sous Gérer.Select Azure Active Directory in the left-hand navigation, then select App registrations under Manage.

    Une capture d’écran des inscriptions d’applicationsA screenshot of the App registrations

  3. Sélectionnez Nouvelle inscription.Select New registration. Sur la page Inscrire une application, définissez les valeurs comme suit.On the Register an application page, set the values as follows.

    • Définissez le Nom sur Graph PowerShell Script.Set Name to Graph PowerShell Script.
    • Définissez les types de comptes pris en charge sur les comptes dans ce répertoire d’organisation uniquement.Set Supported account types to Accounts in this organizational directory only.
    • Laissez l' URI de redirection vide.Leave Redirect URI blank.

    Capture d’écran de la page Inscrire une application

  4. Sélectionner Inscription.Select Register. Sur la page script PowerShell Graph , copiez les valeurs de l’ID d' application (client) et de l' ID de répertoire (client) et enregistrez-les.On the Graph PowerShell Script page, copy the values of the Application (client) ID and Directory (tenant) ID and save them.

    Une capture d’écran de l’ID d’application de la nouvelle inscription d'application

  5. Sélectionnez autorisations d’API sous gérer.Select API Permissions under Manage. Choisissez Ajouter une autorisation.Choose Add a permission.

  6. Sélectionnez Microsoft Graph, puis autorisations d’application.Select Microsoft Graph, then Application Permissions. Ajoutez User. Read. All et Group. Read. All, puis sélectionnez Ajouter des autorisations.Add User.Read.All and Group.Read.All, then select Add permissions.

  7. Dans les autorisations configurées, supprimez l’autorisation utilisateur délégué. lecture sous Microsoft Graph en sélectionnant le ... à droite de l’autorisation et en sélectionnant Supprimer l’autorisation.In the Configured permissions, remove the delegated User.Read permission under Microsoft Graph by selecting the ... to the right of the permission and selecting Remove permission. Sélectionnez Oui, supprimer pour confirmer.Select Yes, remove to confirm.

  8. Sélectionnez le bouton accorder le consentement de l’administrateur pour... , puis sélectionnez Oui pour accorder le consentement de l’administrateur pour les autorisations d’application configurées.Select the Grant admin consent for... button, then select Yes to grant admin consent for the configured application permissions. La colonne État du tableau autorisations configurées passe à accordé pour....The Status column in the Configured permissions table changes to Granted for ....

    Capture d’écran des autorisations configurées pour le webhook avec le consentement de l’administrateur accordé

  9. Sélectionnez Certificats et secrets sous Gérer.Select Certificates & secrets under Manage. Sélectionnez le bouton Télécharger le certificat .Select the Upload certificate button. Accédez au fichier de clé publique de votre certificat et sélectionnez Ajouter.Browse to your certificate's public key file and select Add.

AuthentifierAuthenticate

Vous devez disposer de trois informations après avoir effectué les étapes de configuration ci-dessus.You should have three pieces of information after completing the configuration steps above.

  • Sujet du certificat téléchargé vers l’inscription de votre application Azure AD.Certificate subject of the certificate uploaded to your Azure AD app registration.
  • ID de l’application pour l’inscription de votre application.Application ID for your app registration.
  • Votre ID de client.Your tenant ID.

Utilisons-les pour tester l’authentification.Let's use those to test authentication. Ouvrez PowerShell et exécutez la commande suivante, en remplaçant les espaces réservés par vos informations.Open PowerShell and run the following command, replacing the placeholders with your information.

Connect-Graph -ClientID YOUR_APP_ID -TenantId YOUR_TENANT_ID -CertificateName YOUR_CERT_SUBJECT

Si cette opération réussit, vous verrez Welcome To Microsoft Graph! .If this succeeds, you will see Welcome To Microsoft Graph!. Exécutez Get-MgContext pour vérifier que vous avez été authentifié avec application uniquement.Run Get-MgContext to verify that you've authenticated with app-only. La sortie doit ressembler à ce qui suit.The output should look like the following.

ClientId              : YOUR_APP_ID
TenantId              : YOUR_TENANT_ID
CertificateThumbprint :
Scopes                : {Group.Read.All, User.Read.All}
AuthType              : AppOnly
CertificateName       : YOUR_CERT_SUBJECT
Account               :
AppName               : Graph PowerShell Script
ContextScope          : Process

Créer le scriptCreate the script

Créez un fichier nommé GraphAppOnly.ps1 et ajoutez le code suivant.Create a new file named GraphAppOnly.ps1 and add the following code.

# Authenticate
Connect-Graph -ClientID YOUR_APP_ID -TenantId YOUR_TENANT_ID -CertificateName YOUR_CERT_SUBJECT

Write-Host "USERS:"
Write-Host "======================================================"
# List first 50 users
Get-MgUser -Property "id,displayName" -PageSize 50 | Format-Table DisplayName, Id

Write-Host "GROUPS:"
Write-Host "======================================================"
# List first 50 groups
Get-MgGroup -Property "id,displayName" -PageSize 50 | Format-Table DisplayName, Id

# Disconnect
Disconnect-Graph

Remplacez les espaces réservés dans la Connect-Graph commande par vos informations.Replace the placeholders in the Connect-Graph command with your information. Enregistrez le fichier, puis ouvrez PowerShell dans le répertoire où vous avez créé le fichier.Save the file, then open PowerShell in the directory where you created the file. Exécutez le script avec la commande suivante.Run the script with the following command.

.\GraphAppOnly.ps1

Le script génère une liste d’utilisateurs et de groupes semblable à la sortie ci-dessous (tronquée par souci de concision).The script outputs a list of users and groups similar to the output below (truncated for brevity).

Welcome To Microsoft Graph!
USERS:
======================================================

DisplayName              Id
-----------              --
Conf Room Adams          88d1ba68-8ff5-4de2-90ed-768c00abcfae
Adele Vance              3103c7b9-cfe6-4cd3-a696-f88909b9a609
MOD Administrator        da3a885e-2d97-41de-9347-5271ef321b58
...

GROUPS:
======================================================

DisplayName                         Id
-----------                         --
App Development                     06dce3e5-d310-4add-ab2c-be728fb9076e
All Employees                       1a1cd42d-9801-4e9d-9b77-5215886174ef
Mark 8 Project Team                 2bf1b0d0-81f6-4e80-b971-d1db69f8d651
...