Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, agregará autenticación solo de aplicación a la aplicación que creó en Compilación de aplicaciones PHP con Microsoft Graph y autenticación solo de aplicación.
Configuración del cliente de Graph para la autenticación solo de la aplicación
En esta sección, usará la PhpLeagueAuthenticationProvider clase para solicitar un token de acceso mediante el flujo de credenciales de cliente.
Cree un nuevo archivo en el directorio raíz del proyecto denominado GraphHelper.php. Agregue el siguiente código.
<?php class GraphHelper { } ?>Agregue las siguientes
usinginstrucciones dentro de las etiquetas 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;Agregue el código siguiente a la clase
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']); }Reemplace la función vacía
initializeGraphen main.php por lo siguiente.function initializeGraph(): void { GraphHelper::initializeGraphForAppOnlyAuth(); }
Este código carga información del archivo .env e inicializa dos propiedades, un ClientCredentialContext objeto y un GraphServiceClient objeto . El ClientCredentialContext objeto se usa para autenticar solicitudes y el GraphServiceClient objeto se usa para realizar llamadas a Microsoft Graph.
Prueba del flujo de credenciales de cliente
A continuación, agregue código para obtener un token de acceso de GraphHelper.
Agregue la siguiente función a la clase
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(); }Reemplace la función vacía
displayAccessTokenen main.php por lo siguiente.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); } }Compile y ejecute la aplicación. Escriba
1cuando se le solicite una opción. La aplicación muestra el token de acceso que capturó mediante la información de autenticación configurada anteriormente en las variables de entorno.$ 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...Sugerencia
Solo con fines de validación y depuración, puede descodificar tokens de acceso de solo aplicación mediante el analizador de tokens en línea de Microsoft en https://jwt.ms. El análisis del token puede ser útil si se producen errores de token al llamar a Microsoft Graph. Por ejemplo, comprobar que la
rolenotificación del token contiene los ámbitos de permiso de Microsoft Graph esperados.