Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

189
Views
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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!