Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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.
Créez un fichier dans le répertoire racine de votre projet nommé GraphHelper.php. Ajoutez le code suivant.
<?php class GraphHelper { } ?>Ajoutez les instructions suivantes
usingdans 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;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']); }Remplacez la fonction vide
initializeGraphdans 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
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(); }Remplacez la fonction vide
displayAccessTokendans 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); } }Générez et exécutez l’application. Entrez
1lorsque 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
rolejeton contient les étendues d’autorisation Microsoft Graph attendues.