Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, vai adicionar a autenticação apenas de aplicação à aplicação que criou na compilação de aplicações PHP com o Microsoft Graph e a autenticação apenas de aplicações.
Configurar o cliente do Graph para autenticação apenas de aplicações
Nesta secção, vai utilizar a PhpLeagueAuthenticationProvider classe para pedir um token de acesso com o fluxo de credenciais de cliente.
Crie um novo ficheiro no diretório de raiz do projeto com o nome GraphHelper.php. Adicione o código a seguir.
<?php class GraphHelper { } ?>Adicione as seguintes
usinginstruções nas 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;Adicione o seguinte código à 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']); }Substitua a função
initializeGraphvazia em main.php pelo seguinte.function initializeGraph(): void { GraphHelper::initializeGraphForAppOnlyAuth(); }
Este código carrega informações do ficheiro .env e inicializa duas propriedades, um ClientCredentialContext objeto e um GraphServiceClient objeto. O ClientCredentialContext objeto é utilizado para autenticar pedidos e o GraphServiceClient objeto é utilizado para fazer chamadas para o Microsoft Graph.
Testar o fluxo de credenciais do cliente
Em seguida, adicione código para obter um token de acesso a GraphHelperpartir do .
Adicione a função a seguir à 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(); }Substitua a função
displayAccessTokenvazia em main.php pelo seguinte.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); } }Crie e execute a aplicação. Introduza
1quando lhe for pedida uma opção. A aplicação apresenta o token de acesso obtido com as informações de autenticação configuradas anteriormente nas variáveis de ambiente.$ 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...Dica
Apenas para fins de validação e depuração, pode descodificar tokens de acesso apenas de aplicações com o analisador de tokens online da Microsoft em https://jwt.ms. Analisar o token pode ser útil se encontrar erros de token ao chamar o Microsoft Graph. Por exemplo, verificar se a
roleafirmação no token contém os âmbitos de permissão esperados do Microsoft Graph.