Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel fügen Sie der Anwendung, die Sie unter Erstellen von PHP-Apps mit Microsoft Graph und nur app-Authentifizierung erstellt haben, die reine App-Authentifizierung hinzu.
Konfigurieren des Graph-Clients für die reine App-Authentifizierung
In diesem Abschnitt verwenden Sie die PhpLeagueAuthenticationProvider -Klasse, um mithilfe des Clientanmeldeinformationsflows ein Zugriffstoken anzufordern.
Erstellen Sie im Stammverzeichnis Ihres Projekts eine neue Datei mit dem Namen GraphHelper.php. Fügen Sie den folgenden Code hinzu.
<?php class GraphHelper { } ?>Fügen Sie die folgenden
usingAnweisungen innerhalb der PHP-Tags hinzu.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;Fügen Sie der
GraphHelper-Klasse den folgenden Code hinzu.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']); }Ersetzen Sie die leere
initializeGraphFunktion in Standard.php durch Folgendes.function initializeGraph(): void { GraphHelper::initializeGraphForAppOnlyAuth(); }
Dieser Code lädt Informationen aus der ENV-Datei und initialisiert zwei Eigenschaften, ein ClientCredentialContext -Objekt und ein GraphServiceClient -Objekt. Das ClientCredentialContext -Objekt wird zum Authentifizieren von Anforderungen verwendet, und das GraphServiceClient -Objekt wird für Aufrufe an Microsoft Graph verwendet.
Testen des Clientanmeldeinformationsflows
Fügen Sie als Nächstes Code hinzu, um ein Zugriffstoken GraphHelpervon abzurufen.
Fügen Sie die folgende Funktion zur
GraphHelper-Klasse hinzu: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(); }Ersetzen Sie die leere
displayAccessTokenFunktion in Standard.php durch Folgendes.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); } }Erstellen Sie die App, und führen Sie sie aus. Geben Sie ein
1, wenn Sie zur Eingabe einer Option aufgefordert werden. Die Anwendung zeigt das abgerufene Zugriffstoken mithilfe der Authentifizierungsinformationen an, die zuvor in den Umgebungsvariablen konfiguriert wurden.$ 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...Tipp
Nur zu Validierungs- und Debugzwecken können Sie Nur-App-Zugriffstoken mithilfe des Onlinetokenparsers von Microsoft unter https://jwt.msdecodieren. Die Analyse Ihres Tokens kann nützlich sein, wenn beim Aufrufen von Microsoft Graph Tokenfehler auftreten. Beispielsweise wird überprüft, ob der
roleAnspruch im Token die erwarteten Microsoft Graph-Berechtigungsbereiche enthält.