Configura el inicio de sesión social con OpenID Connect (OIDC)
El conector oficial de Logto para el protocolo OpenID Connect (OIDC).
Esta guía asume que tienes un entendimiento básico de los Conectores de Logto. Para aquellos que no están familiarizados, por favor consulta la guía de Conectores para comenzar.
Comenzar
El conector OIDC permite la conexión de Logto con cualquier proveedor de identidad social que admita el protocolo OIDC. Utiliza el conector OIDC para que tu aplicación pueda:
- Añadir botones de inicio de sesión social
- Vincular cuentas de usuario a identidades sociales
- Sincronizar la información del perfil de usuario desde el proveedor social
- Acceder a APIs de terceros mediante el almacenamiento seguro de tokens en Logto Secret Vault para tareas de automatización (por ejemplo, editar Google Docs, gestionar eventos de Calendar en tu aplicación)
Para configurar estas funciones de autenticación, primero crea un conector OIDC en Logto:
- Ve a Consola de Logto > Conector > Conector social.
- Haz clic en Agregar conector social, selecciona OIDC, haz clic en Siguiente y sigue el tutorial paso a paso para completar la integración.
El conector OIDC es un tipo especial de conector en Logto; puedes agregar múltiples conectores basados en el protocolo OIDC.
Crea tu aplicación OIDC
Cuando abres esta página, asumimos que ya sabes qué proveedor de identidad social deseas conectar. Lo primero que debes hacer es confirmar que el proveedor de identidad admite el protocolo OIDC, que es un requisito previo para configurar un conector válido. Luego, sigue las instrucciones del proveedor de identidad para registrar y crear la aplicación relevante para la autorización OIDC.
Configura tu conector
SÓLO admitimos el tipo de concesión "Authorization Code" por motivos de seguridad y se adapta perfectamente al escenario de Logto.
clientId
y clientSecret
se pueden encontrar en la página de detalles de tu aplicación OIDC.
clientId: El client ID es un identificador único que identifica la aplicación cliente durante el registro con el servidor de autorización. Este ID es utilizado por el servidor de autorización para verificar la identidad de la aplicación cliente y asociar cualquier token de acceso autorizado con esa aplicación cliente específica.
clientSecret: El client secret es una clave confidencial que se emite a la aplicación cliente por el servidor de autorización durante el registro. La aplicación cliente utiliza esta clave secreta para autenticarse con el servidor de autorización al solicitar tokens de acceso. El client secret se considera información confidencial y debe mantenerse seguro en todo momento.
tokenEndpointAuthMethod: El método de autenticación del endpoint de token es utilizado por la aplicación cliente para autenticarse con el servidor de autorización al solicitar tokens de acceso. Para descubrir los métodos admitidos, consulta el campo token_endpoint_auth_methods_supported
disponible en el endpoint de descubrimiento de OpenID Connect del proveedor de servicios OAuth 2.0, o consulta la documentación relevante proporcionada por el proveedor de servicios OAuth 2.0.
clientSecretJwtSigningAlgorithm (Opcional): Solo es necesario cuando tokenEndpointAuthMethod
es client_secret_jwt
. El algoritmo de firma JWT del client secret es utilizado por la aplicación cliente para firmar el JWT que se envía al servidor de autorización durante la solicitud de token.
scope: El parámetro scope se utiliza para especificar el conjunto de recursos y permisos a los que la aplicación cliente solicita acceso. El parámetro scope normalmente se define como una lista de valores separados por espacios que representan permisos específicos. Por ejemplo, un valor de scope "read write" podría indicar que la aplicación cliente solicita acceso de lectura y escritura a los datos de un usuario.
Se espera que encuentres authorizationEndpoint
, tokenEndpoint
, jwksUri
y issuer
como información de configuración del Proveedor OpenID. Deberían estar disponibles en la documentación del proveedor social.
authenticationEndpoint: Este endpoint se utiliza para iniciar el proceso de autenticación. El proceso de autenticación normalmente implica que el usuario inicie sesión y otorgue autorización para que la aplicación cliente acceda a sus recursos.
tokenEndpoint: Este endpoint es utilizado por la aplicación cliente para obtener un token de ID que puede usarse para acceder a los recursos solicitados. La aplicación cliente normalmente envía una solicitud al endpoint de token con un tipo de concesión y un código de autorización para recibir un token de ID.
jwksUri: Esta es la URL del endpoint donde se puede obtener el JSON Web Key Set (JWKS) del proveedor de identidad social (IdP). El JWKS es un conjunto de claves criptográficas que el IdP utiliza para firmar y verificar los JSON Web Tokens (JWTs) que se emiten durante el proceso de autenticación. El jwksUri
es utilizado por la parte confiable (RP) para obtener las claves públicas usadas por el IdP para firmar los JWTs, de modo que la RP pueda verificar la autenticidad e integridad de los JWTs recibidos del IdP.
issuer: Este es el identificador único del IdP que es utilizado por la RP para verificar los JWTs recibidos del IdP. Se incluye en los JWTs como el reclamo (claim) iss
(el token de ID siempre es un JWT). El valor de issuer debe coincidir con la URL del servidor de autorización del IdP, y debe ser un URI en el que la RP confíe. Cuando la RP recibe un JWT, verifica el reclamo iss
para asegurarse de que fue emitido por un IdP confiable y que el JWT está destinado a ser usado con la RP.
Juntos, jwksUri
y issuer
proporcionan un mecanismo seguro para que la RP verifique la identidad del usuario final durante el proceso de autenticación. Al usar las claves públicas obtenidas del jwksUri
, la RP puede verificar la autenticidad e integridad de los JWTs emitidos por el IdP. El valor de issuer garantiza que la RP solo acepte JWTs que hayan sido emitidos por un IdP confiable y que los JWTs estén destinados a ser usados con la RP.
Dado que siempre se requiere una solicitud de autenticación, se proporciona un authRequestOptionalConfig
para agrupar todas las configuraciones opcionales. Puedes encontrar detalles en OIDC Authentication Request. También puedes notar que nonce
no está presente en esta configuración. Dado que nonce
debe ser idéntico para cada solicitud, colocamos la generación de nonce
en la implementación del código. ¡Así que no te preocupes por ello! Los mencionados anteriormente jwksUri
y issuer
también están incluidos en idTokenVerificationConfig
.
Quizás te preguntes por qué un protocolo OIDC estándar admite tanto los flujos implícitos como los híbridos, pero el conector de Logto solo admite el flujo de autorización. Se ha determinado que los flujos implícitos e híbridos son menos seguros que el flujo de autorización. Debido al enfoque de Logto en la seguridad, solo admite el flujo de autorización para ofrecer el mayor nivel de seguridad a sus usuarios, a pesar de su naturaleza ligeramente menos conveniente.
responseType
y grantType
SOLO pueden ser valores FIJOS con el flujo "Authorization Code", por lo que los hacemos opcionales y los valores predeterminados se completarán automáticamente.
Para todos los tipos de flujo, proporcionamos una clave OPCIONAL customConfig
para colocar tus parámetros personalizados.
Cada proveedor de identidad social puede tener su propia variante sobre el protocolo estándar OIDC. Si tu proveedor de identidad social deseado se adhiere estrictamente al protocolo estándar OIDC, entonces no necesitas preocuparte por customConfig
.
Tipos de configuración
Nombre | Tipo | Requerido |
---|---|---|
scope | string | True |
clientId | string | True |
clientSecret | string | True |
authorizationEndpoint | string | True |
tokenEndpoint | string | True |
idTokenVerificationConfig | IdTokenVerificationConfig | True |
authRequestOptionalConfig | AuthRequestOptionalConfig | False |
customConfig | Record<string, string> | False |
Propiedades de AuthRequestOptionalConfig | Tipo | Requerido |
---|---|---|
responseType | string | False |
tokenEndpoint | string | False |
responseMode | string | False |
display | string | False |
prompt | string | False |
maxAge | string | False |
uiLocales | string | False |
idTokenHint | string | False |
loginHint | string | False |
acrValues | string | False |
Propiedades de IdTokenVerificationConfig | Tipo | Requerido |
---|---|---|
jwksUri | string | True |
issuer | string | string[] | False |
audience | string | string[] | False |
algorithms | string[] | False |
clockTolerance | string | number | False |
crit | Record<string, string | boolean> | False |
currentDate | Date | False |
maxTokenAge | string | number | False |
subject | string | False |
typ | string | False |
Consulta aquí para encontrar más detalles sobre IdTokenVerificationConfig
.
Configuraciones generales
Aquí tienes algunas configuraciones generales que no bloquearán la conexión con tu proveedor de identidad pero pueden afectar la experiencia de autenticación del usuario final.
Nombre y logo del botón social
Si deseas mostrar un botón social en tu página de inicio de sesión, puedes establecer el nombre y el logo (modo oscuro y modo claro) del proveedor de identidad social. Esto ayudará a los usuarios a reconocer la opción de inicio de sesión social.
Nombre del proveedor de identidad
Cada conector social tiene un nombre único de Proveedor de Identidad (IdP) para diferenciar las identidades de los usuarios. Mientras que los conectores comunes usan un nombre de IdP fijo, los conectores personalizados requieren un valor único. Aprende más sobre nombres de IdP para más detalles.
Sincronizar información de perfil
En el conector OIDC, puedes establecer la política para sincronizar la información del perfil, como nombres de usuario y avatares. Elige entre:
- Sincronizar solo al registrarse: La información del perfil se obtiene una vez cuando el usuario inicia sesión por primera vez.
- Sincronizar siempre al iniciar sesión: La información del perfil se actualiza cada vez que el usuario inicia sesión.
Almacenar tokens para acceder a APIs de terceros (Opcional)
Si deseas acceder a las APIs del Proveedor de Identidad y realizar acciones con la autorización del usuario (ya sea mediante inicio de sesión social o vinculación de cuenta), Logto necesita obtener alcances de API específicos y almacenar los tokens.
- Añade los alcances requeridos en el campo scope siguiendo las instrucciones anteriores.
- Habilita Almacenar tokens para acceso persistente a la API en el conector OIDC de Logto. Logto almacenará de forma segura los tokens de acceso en el Secret Vault.
- Para proveedores de identidad OAuth/OIDC estándar, el alcance
offline_access
debe incluirse para obtener un token de actualización, evitando solicitudes repetidas de consentimiento del usuario.
Mantén tu client secret seguro y nunca lo expongas en el código del lado del cliente. Si se ve comprometido, genera uno nuevo inmediatamente en la configuración de la aplicación de tu proveedor de identidad.
Utiliza el conector OIDC
Una vez que hayas creado un conector OIDC y lo hayas conectado a tu proveedor de identidad, puedes incorporarlo en tus flujos de usuario final. Elige las opciones que se adapten a tus necesidades:
Habilitar el botón de inicio de sesión social
- En Logto Console, ve a Experiencia de inicio de sesión > Registro e inicio de sesión.
- Añade el conector OIDC en la sección Inicio de sesión social para permitir que los usuarios se autentiquen con tu proveedor de identidad.
Aprende más sobre la experiencia de inicio de sesión social.
Vincular o desvincular una cuenta social
Utiliza la Account API para construir un Centro de Cuenta personalizado en tu aplicación que permita a los usuarios autenticados vincular o desvincular sus cuentas sociales. Sigue el tutorial de Account API
Se permite habilitar el conector OIDC solo para vinculación de cuentas y acceso a la API, sin habilitarlo para inicio de sesión social.
Acceder a APIs del proveedor de identidad y realizar acciones
Tu aplicación puede recuperar tokens de acceso almacenados desde el Secret Vault para llamar a las APIs de tu proveedor de identidad y automatizar tareas de backend. Las capacidades específicas dependen de tu proveedor de identidad y los alcances que hayas solicitado. Consulta la guía sobre cómo recuperar tokens almacenados para acceso a la API.
Gestionar la identidad social del usuario
Después de que un usuario vincule su cuenta social, los administradores pueden gestionar esa conexión en Logto Console:
- Navega a Logto console > Gestión de usuarios y abre el perfil del usuario.
- En Conexiones sociales, localiza el elemento del proveedor de identidad y haz clic en Gestionar.
- En esta página, los administradores pueden gestionar la conexión social del usuario, ver toda la información de perfil concedida y sincronizada desde su cuenta social, y comprobar el estado del token de acceso.
Algunas respuestas de token de acceso del Proveedor de Identidad no incluyen la información específica de los alcances, por lo que Logto no puede mostrar directamente la lista de permisos concedidos por el usuario. Sin embargo, siempre que el usuario haya consentido los alcances solicitados durante la autorización, tu aplicación tendrá los permisos correspondientes al acceder a la API OIDC.