Partager via


Ajouter l’authentification d’application uniquement aux applications PHP pour Microsoft Graph

Dans cet article, vous allez ajouter l’authentification d’application uniquement à l’application que vous avez créée dans Générer des applications PHP avec Microsoft Graph et l’authentification d’application uniquement.

Configurer le client Graph pour l’authentification d’application uniquement

Dans cette section, vous utilisez la PhpLeagueAuthenticationProvider classe pour demander un jeton d’accès à l’aide du flux d’informations d’identification du client.

  1. Créez un fichier dans le répertoire racine de votre projet nommé GraphHelper.php. Ajoutez le code suivant.

    <?php
    class GraphHelper {
    }
    ?>
    
  2. Ajoutez les instructions suivantes using dans les balises PHP.

    use Microsoft\Graph\Core\Authentication\GraphPhpLeagueAccessTokenProvider;
    use Microsoft\Graph\Generated\Models;
    use Microsoft\Graph\Generated\Users\UsersRequestBuilderGetQueryParameters;
    use Microsoft\Graph\Generated\Users\UsersRequestBuilderGetRequestConfiguration;
    use Microsoft\Graph\GraphServiceClient;
    use Microsoft\Kiota\Authentication\Oauth\ClientCredentialContext;
    
  3. Ajoutez ce code à la classe GraphHelper.

    private static string $clientId = '';
    private static string $clientSecret = '';
    private static string $tenantId = '';
    private static ClientCredentialContext $tokenContext;
    private static GraphServiceClient $appClient;
    
    public static function initializeGraphForAppOnlyAuth(): void {
        GraphHelper::$clientId = $_ENV['CLIENT_ID'];
        GraphHelper::$clientSecret = $_ENV['CLIENT_SECRET'];
        GraphHelper::$tenantId = $_ENV['TENANT_ID'];
    
        GraphHelper::$tokenContext = new ClientCredentialContext(
            GraphHelper::$tenantId,
            GraphHelper::$clientId,
            GraphHelper::$clientSecret);
    
        GraphHelper::$appClient = new GraphServiceClient(
            GraphHelper::$tokenContext, ['https://graph.microsoft.com/.default']);
    }
    
  4. Remplacez la fonction vide initializeGraph dans main.php par ce qui suit.

    function initializeGraph(): void {
        GraphHelper::initializeGraphForAppOnlyAuth();
    }
    

Ce code charge des informations à partir du fichier .env et initialise deux propriétés, un ClientCredentialContext objet et un GraphServiceClient objet. L’objet ClientCredentialContext est utilisé pour authentifier les demandes, et l’objet GraphServiceClient est utilisé pour effectuer des appels à Microsoft Graph.

Tester le flux d’informations d’identification du client

Ensuite, ajoutez du code pour obtenir un jeton d’accès à partir de .GraphHelper

  1. Ajoutez la fonction suivante à la classe GraphHelper.

    public static function getAppOnlyToken(): string {
        // Create an access token provider to get the token
        $tokenProvider = new GraphPhpLeagueAccessTokenProvider(GraphHelper::$tokenContext);
        return $tokenProvider
            ->getAuthorizationTokenAsync('https://graph.microsoft.com')
            ->wait();
    }
    
  2. Remplacez la fonction vide displayAccessToken dans main.php par ce qui suit.

    function displayAccessToken(): void {
        try {
            $token = GraphHelper::getAppOnlyToken();
            print('App-only token: '.$token.PHP_EOL.PHP_EOL);
        } catch (Exception $e) {
            print('Error getting access token: '.$e->getMessage().PHP_EOL.PHP_EOL);
        }
    }
    
  3. Générez et exécutez l’application. Entrez 1 lorsque vous êtes invité à entrer une option. L’application affiche le jeton d’accès qu’elle a récupéré à l’aide des informations d’authentification configurées précédemment dans les variables d’environnement.

    $ php main.php
    
    PHP Graph Tutorial
    
    Please choose one of the following options:
    0. Exit
    1. Display access token
    2. List users
    3. Make a Graph call
    1
    App-only token: eyJ0eXAiOiJKV1QiLCJub25jZSI6IlVDTzRYOWtKYlNLVjVkRzJGenJqd2xvVUcwWS...
    

    Conseil

    À des fins de validation et de débogage uniquement, vous pouvez décoder les jetons d’accès d’application uniquement à l’aide de l’analyseur de jetons en ligne de Microsoft à l’adresse https://jwt.ms. L’analyse de votre jeton peut être utile si vous rencontrez des erreurs de jeton lors de l’appel de Microsoft Graph. Par exemple, vérifier que la revendication dans le role jeton contient les étendues d’autorisation Microsoft Graph attendues.

Étape suivante