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 em Criar aplicações TypeScript com o Microsoft Graph e autenticação apenas de aplicações.
A biblioteca de cliente da Identidade do Azure para JavaScript fornece muitas TokenCredential
classes que implementam fluxos de tokens OAuth2. A biblioteca de cliente JavaScript do Microsoft Graph utiliza essas classes para autenticar chamadas para o Microsoft Graph.
Configurar o cliente do Graph para autenticação apenas de aplicações
Nesta secção, vai utilizar a ClientSecretCredential
classe para pedir um token de acesso com o fluxo de credenciais de cliente.
Abra graphHelper.ts e adicione o seguinte código.
import 'isomorphic-fetch'; import { ClientSecretCredential } from '@azure/identity'; import { Client, PageCollection } from '@microsoft/microsoft-graph-client'; // prettier-ignore import { TokenCredentialAuthenticationProvider } from '@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials'; import { AppSettings } from './appSettings'; let _settings: AppSettings | undefined = undefined; let _clientSecretCredential: ClientSecretCredential | undefined = undefined; let _appClient: Client | undefined = undefined; export function initializeGraphForAppOnlyAuth(settings: AppSettings) { // Ensure settings isn't null if (!settings) { throw new Error('Settings cannot be undefined'); } _settings = settings; if (!_clientSecretCredential) { _clientSecretCredential = new ClientSecretCredential( _settings.tenantId, _settings.clientId, _settings.clientSecret, ); } if (!_appClient) { const authProvider = new TokenCredentialAuthenticationProvider( _clientSecretCredential, { scopes: ['https://graph.microsoft.com/.default'], }, ); _appClient = Client.initWithMiddleware({ authProvider: authProvider, }); } }
Substitua a função empty
initializeGraph
no index.ts pelo seguinte.function initializeGraph(settings: AppSettings) { graphHelper.initializeGraphForAppOnlyAuth(settings); }
Este código declara duas propriedades privadas, um ClientSecretCredential
objeto e um Client
objeto. A InitializeGraphForAppOnlyAuth
função cria uma nova instância de ClientSecretCredential
e, em seguida, utiliza essa instância para criar uma nova instância de Client
. Sempre que é efetuada uma chamada à API ao Microsoft Graph através do _appClient
, utiliza a credencial fornecida para obter um token de acesso.
Testar o ClientSecretCredential
Em seguida, adicione código para obter um token de acesso a ClientSecretCredential
partir do .
Adicione a seguinte função ao graphHelper.ts.
export async function getAppOnlyTokenAsync(): Promise<string> { // Ensure credential isn't undefined if (!_clientSecretCredential) { throw new Error('Graph has not been initialized for app-only auth'); } // Request token with given scopes const response = await _clientSecretCredential.getToken([ 'https://graph.microsoft.com/.default', ]); return response.token; }
Substitua a função empty
displayAccessTokenAsync
no index.ts pelo seguinte.async function displayAccessTokenAsync() { try { const userToken = await graphHelper.getAppOnlyTokenAsync(); console.log(`App-only token: ${userToken}`); } catch (err) { console.log(`Error getting app-only access token: ${err}`); } }
Execute o seguinte comando na CLI na raiz do projeto.
npx ts-node index.ts
Introduza
1
quando lhe for pedida uma opção. A aplicação apresenta um token de acesso.TypeScript Graph App-Only Tutorial [1] Display access token [2] List users [3] Make a Graph call [0] Exit Select an option [1...3 / 0]: 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
role
afirmação no token contém os âmbitos de permissão esperados do Microsoft Graph.