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 typeScript con Microsoft Graph y autenticación solo de aplicación.
La biblioteca cliente de Azure Identity para JavaScript proporciona muchas TokenCredential
clases que implementan flujos de token de OAuth2. La biblioteca cliente de JavaScript de Microsoft Graph usa esas clases para autenticar llamadas a Microsoft Graph.
Configuración del cliente de Graph para la autenticación solo de la aplicación
En esta sección, usará la ClientSecretCredential
clase para solicitar un token de acceso mediante el flujo de credenciales de cliente.
Abra graphHelper.ts y agregue el código siguiente.
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, }); } }
Reemplace la función vacía
initializeGraph
de index.ts por lo siguiente.function initializeGraph(settings: AppSettings) { graphHelper.initializeGraphForAppOnlyAuth(settings); }
Este código declara dos propiedades privadas, un ClientSecretCredential
objeto y un Client
objeto . La InitializeGraphForAppOnlyAuth
función crea una nueva instancia de ClientSecretCredential
y, a continuación, usa esa instancia para crear una nueva instancia de Client
. Cada vez que se realiza una llamada API a Microsoft Graph a través de _appClient
, usa la credencial proporcionada para obtener un token de acceso.
Prueba de ClientSecretCredential
A continuación, agregue código para obtener un token de acceso de ClientSecretCredential
.
Agregue la siguiente función a 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; }
Reemplace la función vacía
displayAccessTokenAsync
de index.ts por lo siguiente.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}`); } }
Ejecute el siguiente comando en la CLI en la raíz del proyecto.
npx ts-node index.ts
Escriba
1
cuando se le solicite una opción. La aplicación muestra un token de acceso.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...
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
role
notificación del token contiene los ámbitos de permiso de Microsoft Graph esperados.