Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы добавите проверку подлинности только для приложений в приложение, созданное в разделе Создание приложений PHP с помощью Microsoft Graph и проверки подлинности только для приложений.
Настройка клиента Graph для проверки подлинности только для приложений
В этом разделе вы используете PhpLeagueAuthenticationProvider класс для запроса маркера доступа с помощью потока учетных данных клиента.
Создайте файл в корневом каталоге проекта с именем GraphHelper.php. Добавьте в него указанный ниже код.
<?php class GraphHelper { } ?>Добавьте следующие
usingинструкции в теги 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;Добавьте приведенный ниже код в класс
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']); }Замените пустую
initializeGraphфункцию в main.php следующим кодом.function initializeGraph(): void { GraphHelper::initializeGraphForAppOnlyAuth(); }
Этот код загружает сведения из ENV-файла и инициализирует два свойства: ClientCredentialContext объект и GraphServiceClient объект . Объект ClientCredentialContext используется для проверки подлинности запросов, а GraphServiceClient объект — для выполнения вызовов Microsoft Graph.
Тестирование потока учетных данных клиента
Затем добавьте код для получения маркера доступа из GraphHelper.
Добавьте к классу
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(); }Замените пустую
displayAccessTokenфункцию в main.php следующим кодом.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); } }Выполните сборку и запуск приложения. Введите
1при появлении запроса на выбор параметра. Приложение отображает маркер доступа, который оно извлекает, используя сведения о проверке подлинности, настроенные ранее в переменных среды.$ 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...Совет
Только для проверки и отладки можно декодировать маркеры доступа только для приложений с помощью средства синтаксического анализа токенов Майкрософт в сети по адресу https://jwt.ms. Анализ маркера может оказаться полезным, если при вызове Microsoft Graph возникают ошибки маркера. Например, убедитесь, что
roleутверждение в маркере содержит ожидаемые области разрешений Microsoft Graph.