Saltar al contenido

Autenticación del Cliente

Vinyl puede funcionar como servidor de autorización OpenID Connect (OIDC). El servidor de autorización permite que las aplicaciones cliente, incluidas otras instancias de Vinyl, autentiquen a los usuarios. El proceso de inicio de sesión de OIDC produce un token de acceso que permite a la aplicación cliente acceder a recursos protegidos en nombre del usuario. Los recursos protegidos incluyen APIs REST y Webhook alojadas en Vinyl, así como fuentes de datos de Vinyl Connector.

Soporte de Protocolo

El protocolo OIDC está definido por el estándar OpenID Connect Core 1.0. OIDC es una capa de identidad construida sobre el marco de autorización OAuth 2.0, que está definido por RFC-6749. En conjunto, estos estándares describen:

  • Flujos: un flujo es un proceso mediante el cual el cliente recupera tokens de identidad y acceso. Por este motivo, los flujos también se denominan subvenciones.
  • Extremos: cada flujo implica una o más solicitudes HTTP a URLs conocidas.
  • Ámbitos: las aplicaciones cliente pueden solicitar uno o más ámbitos. Los alcances determinan qué tokens se emiten (identidad, actualización), qué se incluye en esos tokens (reclamaciones) y a qué APIs se puede acceder con esos tokens.
  • Reclamaciones - Tal como lo describe el estándar, el token de identidad es fundamentalmente un Token web JSON (JWT). Los JWT se basan en reclamaciones. El alcance solicitado determina qué reclamaciones se incluyen en el token de identidad.

Flujos Admitidos

El servidor de autorización de Vinyl admite los siguientes flujos básicos de OAuth 2.0:

  • Código de Autorización. El flujo del Código de autorización permite al cliente adquirir un token de acceso, lo que le permite acceder a recursos protegidos en nombre del usuario. El flujo del Código de autorización es un flujo interactivo: un usuario debe estar presente para iniciar el flujo del Código de autorización.
  • Credenciales de cliente. El flujo de Credenciales del cliente permite que la aplicación cliente adquiera un token de acceso en su nombre. Se trata de un flujo de servidor a servidor, que normalmente funciona como una cuenta de servicio.
  • Actualizar token. El flujo de actualización del token permite al cliente solicitar un nuevo token de acceso una vez que el token actual haya caducado. A esto a veces se lo denomina "acceso sin conexión". El flujo de token de actualización se puede utilizar en combinación con los flujos de Código de autorización o Credenciales de cliente. El alcance offline_access habilita el flujo de actualización del token (ver más abajo).

Como se señaló anteriormente, OIDC se basa en el marco de autorización OAuth 2.0. OIDC aprovecha los flujos de OAuth 2.0 y utiliza el parámetro scope para optar por la funcionalidad específica de OIDC. El servidor de autorización de Vinyl admite los siguientes flujos OIDC:

  • Código de Autorización. Cuando se especifica el alcance openid, el flujo del Código de autorización permite al cliente autenticar a un usuario devolviendo un token de identidad adicional. Los ámbitos adicionales determinan qué reclamaciones se incluyen en el token.
  • Actualizar token. El flujo de actualización del token funciona igual en OIDC que en OAuth 2.0.

El servidor de autorización no admite flujos OIDC implícitos ni híbridos. El flujo de credenciales de cliente de OAuth 2.0 no es un flujo OIDC.

El flujo del Código de autorización se puede utilizar con o sin la extensión Clave de prueba para intercambio de códigos (PKCE), tal como se define en RFC-7636.

Extremos Admitidos

El servidor de autorización de Vinyl publica los siguientes extremos:

Extremo Estándar Descripción
/conectar/autorizar RFC-6749 Emite un código de autorización.
/conectar/token RFC-6749 Emite un token de acceso.
/conectar/introspeccionar RFC-7662 Introspección de tokens de acceso.
/conectar/información de usuario Núcleo OIDC Introspección del token de identidad.
/.well-known/openid-configuration Descubrimiento de OIDC Configuración del proveedor OpenID Connect.

Ámbitos Admitidos

El servidor de autorización de Vinyl admite los siguientes ámbitos:

Alcance Descripción
openid Emite un token de identidad OIDC.
perfil Incluye reclamaciones de perfil de usuario en el token de identidad.
* correo* Incluye reclamaciones de direcciones de correo en el token de identidad.
teléfono Incluye reclamos de números de teléfono en el token de identidad.
acceso_sin conexión Emite un token de actualización para su uso en el flujo del token de actualización.
* No disponible para clientes públicos
api Autoriza el acceso a las APIs REST, Webhook y Vinyl Connector alojadas en Vinyl.

Reclamaciones Respaldadas

Como se señaló anteriormente, el token de identidad es un token JWT basado en notificaciones. El cliente puede determinar qué reclamaciones se incluyen en el token de identidad especificando alcances.

Alcance Reclamaciones
openid sub
perfil nombre, apodo, locale y zoneinfo
* correo* * correo* y correo electrónico_verificado
teléfono número_teléfono y número_teléfono_verificado

Para obtener una descripción de cada una de estas reivindicaciones, consulte la sección 5.1 Reivindicaciones estándar del estándar OIDC. Cualquier afirmación estándar que no esté explícitamente enumerada anteriormente no está respaldada.

Configuración

Para hacer uso del servidor de autorización, el administrador de Vinyl primero debe:

  1. Habilite el servidor de autorización.
  2. Registre una aplicación cliente.
  3. Configure la aplicación cliente.

Habilite el Servidor de Autorización

Para habilitar el servidor de autorización, comience iniciando sesión en Vinyl como administrador:

  1. Haga clic en el enlace IDE.
  2. Haga clic en el botón Proveedores de seguridad.
  3. En el panel Autenticación de usuario, ubique el proveedor de seguridad del Servidor de autorización y haga clic en el ícono Detalles (Chevron).
  4. Haga clic en el botón Editar.
  5. Marque la opción Habilitado.
  6. Haga clic en el botón Guardar.

Registrar una Aplicación de Cliente

Cada aplicación cliente que pretenda autenticar usuarios o acceder a recursos protegidos debe estar registrada. Para registrar una aplicación cliente, comience iniciando sesión en Vinyl como administrador:

  1. Haga clic en el enlace IDE.
  2. Haga clic en el botón Administración de usuarios.
  3. Haga clic en el botón Clientes.
  4. Haga clic en el botón +Cliente para registrar una nueva aplicación cliente.
  5. Proporcione lo siguiente:

    • Nombre: un nombre descriptivo y descriptivo para la aplicación cliente.
    • Descripción: una descripción opcional.
    • Usuario: seleccione la cuenta de usuario del servicio. Requerido para el flujo de Credenciales del Cliente. De lo contrario, déjelo en blanco.
    • Requiere PKCE: cuando está marcado, el cliente debe usar la extensión PKCE. Solo se aplica al flujo del Código de autorización y es obligatorio para clientes públicos.
  6. Haga clic en el botón Guardar.

Generar un Secreto de Cliente

La aplicación cliente debe proporcionar sus propias credenciales al solicitar un token de acceso. Las credenciales del cliente constan del ID del cliente y un secreto del cliente. Los secretos de cliente sólo se pueden generar para clientes confidenciales. El panel Secretos estará oculto para los clientes públicos.

Para generar un secreto de cliente:

  1. En el panel Secretos, haga clic en el botón +Secreto.
  2. Proporcione lo siguiente:

    • Descripción: descripción del secreto del cliente opcional.
    • Expira el: si el secreto caduca, establezca la fecha y hora de vencimiento. De lo contrario, deje este campo en blanco.
  3. Haga clic en el botón Guardar.

  4. Copie el ID de cliente y el Secreto de cliente.

ADVERTENCIA: Esta es la única vez que el secreto será visible.

Registrar URI de Redireccionamiento de Cliente

Como se señaló anteriormente, el flujo del Código de autorización es un flujo interactivo. Durante este flujo, el usuario es redirigido al extremo de autorización. Una vez que el usuario se ha autenticado, se le redirige nuevamente a la aplicación cliente.

La URL de devolución de llamada de la aplicación cliente se conoce como "URI de redireccionamiento". Cada URI de redireccionamiento debe estar registrado. Los URI de redireccionamiento del cliente deben cumplir con las siguientes restricciones:

  • La URL de redireccionamiento del cliente debe ser una URL absoluta.
  • La URL de redireccionamiento del cliente debe utilizar el protocolo HTTPS. Sin embargo, la URL de redireccionamiento del cliente puede utilizar el protocolo HTTP al redirigir a localhost.
  • La URL de redireccionamiento del cliente puede contener una cadena de consultar.
  • La URL de redireccionamiento del cliente no debe contener ningún fragmento.

Para registrar un URI de redireccionamiento de cliente:

  1. En el panel Redirecciones, haga clic en el botón + URL.
  2. Proporcione la URL.
  3. Haga clic en el botón Guardar.

Configurar la Aplicación Cliente

Cualquier aplicación cliente OIDC u OAuth 2.0 que cumpla con los estándares y que admita flujos de código de autorización o credenciales de cliente puede utilizar el servidor de autorización de Vinyl. Esto incluye al propio Vinyl: es posible configurar una segunda instancia de Vinyl como cliente.

Para configurar el cliente Vinyl, necesitará:

  • URL raíz del servidor de autorización de Vinyl, por ejemplo https://example.com/Vinyl.
  • ID de cliente y secreto (ver arriba)

Comience iniciando sesión en la instancia del cliente de Vinyl como administrador:

  1. Haga clic en el enlace IDE.
  2. Haga clic en el botón Proveedores de seguridad.
  3. En el panel Autenticación de usuario, haga clic en el botón +Autenticación de usuario.
  4. Proporcione lo siguiente:

    • Nombre: nombre del proveedor de seguridad, por ejemplo Vinyl.
    • Tipo: Vinyl / OpenID Connect
    • Mostrar en el formulario de inicio de sesión: marque esta opción para mostrar la opción de inicio de sesión en el formulario de inicio de sesión.
    • Aprovisionamiento de usuarios: marque esta opción para habilitar el aprovisionamiento de usuarios.
  5. Haga clic en el botón Guardar.

  6. En el panel Extremos, haga clic en el botón + Extremo.
  7. Proporcione lo siguiente:

    • Tipo de Extremo: Emisor de OpenID Connect
    • URL. La URL raíz del servidor de autorización de Vinyl.
  8. Haga clic en el botón Guardar.

  9. En el panel Credenciales, haga clic en el botón +Credenciales.
  10. Proporcione lo siguiente:

    • Tipo: Cliente
    • Nombre de usuario: el ID del cliente (ver arriba).
    • Contraseña: el secreto del cliente (ver arriba).
  11. Haga clic en el botón Guardar.

  12. En el panel Proveedor, haga clic en el botón Editar.
  13. Marque la opción Habilitado.
  14. Haga clic en el botón Guardar.

Una vez completado, los usuarios podrán iniciar sesión en la instancia del cliente Vinyl utilizando el servidor de autorización de Vinyl.

Limitaciones Conocidas

El servidor de autorización de Vinyl no admite lo siguiente

  • Consentimiento del usuario.
  • Flujos OIDC Implícitos o Híbridos