Freigeben über


Hinzufügen der reinen App-Authentifizierung zu PHP-Apps für Microsoft Graph

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.

  1. Erstellen Sie im Stammverzeichnis Ihres Projekts eine neue Datei mit dem Namen GraphHelper.php. Fügen Sie den folgenden Code hinzu.

    <?php
    class GraphHelper {
    }
    ?>
    
  2. Fügen Sie die folgenden using Anweisungen 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;
    
  3. 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']);
    }
    
  4. Ersetzen Sie die leere initializeGraph Funktion 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.

  1. 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();
    }
    
  2. Ersetzen Sie die leere displayAccessToken Funktion 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);
        }
    }
    
  3. 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 role Anspruch im Token die erwarteten Microsoft Graph-Berechtigungsbereiche enthält.

Nächster Schritt