Notes
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
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;
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
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
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
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); } }
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.