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 de JavaScript con Microsoft Graph y autenticación de solo 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.js y agregue el código siguiente.
import 'isomorphic-fetch'; import { ClientSecretCredential } from '@azure/identity'; import { Client } from '@microsoft/microsoft-graph-client'; // prettier-ignore import { TokenCredentialAuthenticationProvider } from '@microsoft/microsoft-graph-client/authProviders/azureTokenCredentials/index.js'; let _settings = undefined; let _clientSecretCredential = undefined; let _appClient = undefined; export function initializeGraphForAppOnlyAuth(settings) { // Ensure settings isn't null if (!settings) { throw new Error('Settings cannot be undefined'); } _settings = settings; // Ensure settings isn't null if (!_settings) { throw new Error('Settings cannot be undefined'); } 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
initializeGraphde index.js por lo siguiente.function initializeGraph(settings) { 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 ClientSecretCredentialy, 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.js.
export async function getAppOnlyTokenAsync() { // 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
displayAccessTokenAsyncde index.js por lo siguiente.async function displayAccessTokenAsync() { try { const appOnlyToken = await getAppOnlyTokenAsync(); console.log(`App-only token: ${appOnlyToken}`); } catch (err) { console.log(`Error getting app-only access token: ${err}`); } }Ejecute el siguiente comando en la CLI en la raíz del proyecto.
node index.jsEscriba
1cuando se le solicite una opción. La aplicación muestra un token de acceso.JavaScript 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
rolenotificación del token contiene los ámbitos de permiso de Microsoft Graph esperados.