es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de enviar las credenciales del cliente en el cuerpo de la solicitud para la llamada de token en Next-Auth?

Estoy implementando la autenticación utilizando Next-Auth y el servidor de autenticación que estoy utilizando está basado en openid connect. Inicialmente, lo probé en la pestaña de Autorización de Postman con client-id, client-secret, redirect-url, scope, grant-type=authorization_code, etc. y “Autenticación del cliente” establecido en "Enviar las credenciales del cliente en el cuerpo". La llamada se realiza correctamente y recibo todos los tokens.

Sin embargo, cuando configuro el método de autenticación del cliente como Enviar como encabezado de autenticación Basic, la llamada al token falla porque el punto final del token del servidor de autenticación espera que se incluya el client-secret en el cuerpo de la solicitud de token.

Ahora, en Next-Auth, la llamada falla por la misma razón. Estoy utilizando un proveedor personalizado y he intentado autenticarme a través de Google, lo cual funcionó bien. He buscado en la documentación de next-auth pero no encontré nada sobre cómo configurar el método de autenticación de token. ¿Existe alguna forma de enviar las credenciales del cliente en el cuerpo de la solicitud del token en Next-Auth?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para enviar las credenciales del cliente en el cuerpo de la solicitud para la llamada de token en Next-Auth, puedes agregar la propiedad tokenEndpoint a tu configuración de Next-Auth para especificar la URL del punto de terminación de token y utilizar la opción credentials para establecer las credenciales del cliente en el cuerpo de la solicitud.

    Por ejemplo:

    import NextAuth from 'next-auth'
    import Providers from 'next-auth/providers'
    
    export default NextAuth({
      providers: [
        // agregar aquí tu proveedor
      ],
      // agregar la propiedad tokenEndpoint y establecer las credenciales del cliente en la opción credentials
      credentials: {
        client: {
          id: 'TU_ID_DE_CLIENTE',
          secret: 'TU_SECRETO_DE_CLIENTE'
        }
      },
      token: {
        endpoint: 'https://tu-servidor-de-autenticacion/token',
        credentials: 'include'
      }
    })
    

    En el ejemplo anterior, https://tu-servidor-de-autenticacion/token` debe ser reemplazado con la URL real del punto de terminación de token de tu servidor de autenticación, yTU_ID_DE_CLIENTEyTU_SECRETO_DE_CLIENTE` deben ser reemplazados con tus credenciales de cliente reales.

    Con esta configuración, Next-Auth enviará las credenciales del cliente en el cuerpo de la solicitud para la llamada de token al servidor de autenticación, al igual que en el ejemplo de Postman donde se establecía “Autenticación del cliente” en “Enviar credenciales del cliente en el cuerpo”.

Comments are closed.