Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

188
Vistas
En JavaScript, ¿cómo podemos usar la biblioteca de autenticación de Microsoft para solicitar un token JWT para una conexión de cliente con un usuario de integración?

Tenemos un microservicio, compuesto en JavaScript, que necesita consumir un segundo microservicio. El segundo microservicio requiere que la aplicación de consumo proporcione un token JWT que afirma

 "roles": [ "FooBar.Read" ],

para obtener permiso para usar el servicio.

En lugar de reinventar la rueda al llamar a Azure Active Directory para obtener y almacenar en caché el token, nos gustaría utilizar el paquete de nodos de la biblioteca de autenticación de Microsoft.

Creo que probablemente queramos usar el método acquireTokenSilent() de ConfidentialClientApplication , pero no tengo del todo claro cómo crear la solicitud.

He creado este módulo:

 import msal from '@azure/msal-node'; import {cachePlugin} from 'token-cache'; const confidentialClient = new msal.ConfidentialClientApplication({ auth: { authority: `${process.env.AZURE_ACTIVE_DIRECTORY_AUTHORITY_URI}/${process.env.AZURE_ACTIVE_DIRECTORY_TENANT_ID}`, clientId: process.env.AZURE_ACTIVE_DIRECTORY_CLIENT_ID, clientSecret: process.env.AZURE_ACTIVE_DIRECTORY_CLIENT_SECRET, knownAuthorities: [], }, cache: { cachePlugin, }, system: { loggerOptions: { loggerCallback(loglevel, message) { console.log(message); }, piiLoggingEnabled: false, logLevel: msal.LogLevel.Verbose, }, }, }); const silentFlowRequest = { account: { tenantId: process.env.AZURE_ACTIVE_DIRECTORY_TENANT_ID, username: process.env.AZURE_ACTIVE_DIRECTORY_USERNAME, password: process.env.AZURE_ACTIVE_DIRECTORY_PASSWORD, }, scopes: [process.env.AZURE_ACTIVE_DIRECTORY_EMPLOYEE_MANAGEMENT_SCOPE] }; async function acquireToken() { try { return await confidentialClient.acquireTokenSilent(silentFlowRequest) } catch (error) { console.error(error); } } module.exports = { acquireToken };

Sin embargo, espero que falle porque Intell-J me dice:

El tipo de argumento {scopes: string[], account: {password: string, tenantId: string, username: string}} no se puede asignar al tipo de parámetro SilentFlowRequest

¿Cuál es la forma correcta de hacer esto?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Gracias por comunicarse con nosotros, siga el documento: https://github.com/AzureAD/azure-activedirectory-library-for-dotnet/wiki/AcquireTokenSilentAsync-using-a-cached-token#recommended-pattern-to- adquirir-un-token .

Espero que esto te ayudará.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Puede usar la concesión de credenciales de cliente de MSAL mediante un secreto de cliente para adquirir tokens para su API web. Tenemos un ejemplo de código con un README bastante explicativo aquí .

La concesión de credenciales de cliente primero adquiere un token (a través de ConfidentialClientApplicaiton.acquireTokenByClientCredentials ) y realiza una solicitud de red a AzureAD. Una vez que se adquiere el token, MSAL lo almacena en caché automáticamente y las llamadas posteriores devolverán el mismo token del caché hasta que caduque, momento en el cual MSAL actualizará el token por usted.

 // Create msal application object const confidentialClientApplication = new msal.ConfidentialClientApplication( { authOptions: { clientId: "<ENTER_CLIENT_ID>", authority: "https://login.microsoftonline.com/<ENTER_TENANT_ID>", clientSecret: "<ENTER_CLIENT_SECRET>" } }); // Acquire tokens function getClientCredentialsToken(confidentialClientApplication, scopes) { // With client credentials flows permissions need to be granted in the portal by a tenant administrator. // The scope is always in the format "<resource>/.default" const clientCredentialRequest = { scopes: scopes }; return confidentialClientApplication .acquireTokenByClientCredential(clientCredentialRequest) .then((response) => { // Handle response }).catch((error) => { // Handle error }); }

Básicamente, crea un secreto de cliente en Azure Portal y luego lo coloca en su configuración de MSAL. Este secreto se usa en lugar de las credenciales de usuario, lo que permite que su aplicación se autentique con AzureAD y adquiera tokens sin interacción del usuario.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda