Saltar al contenido

Proveedor de Seguridad: JWT SSO

El proveedor de seguridad JWT SSO es una despliegue de un protocolo de inicio de sesión único (SSO) personalizado. El protocolo permite que un servicio confiable registre a un usuario en Vinyl. Esto se logra generando un token web JSON (JWT) y pasando el token a un extremo de autenticación mediante una redirección del navegador del cliente.

Protocolo

El protocolo JWT SSO aprovecha los siguientes estándares:

Extremos

El protocolo JWT SSO define dos extremos de servicio.

  • Servicio de autenticación - Organizado por Vinyl.
  • Servicio de inicio de externo de confianza.

Servicio de Autenticación

El servicio de autenticación es responsable de:

  1. Autenticar un JWT.
  2. Iniciar sesión del usuario en Vinyl.

Ejemplo:

https://example.com/Vinyl/signin-{Provider}

Dónde {Provider} es el nombre del proveedor de seguridad de Vinyl. Ver Configuración.

Parámetros

El extremo del servicio de autenticación define los siguientes parámetros:

  • jwt – Token web JSON. Requerido.
  • return_to – URI relativa. Opcional.
Jwt

El jwt El parámetro contiene el token web JSON. Los JWT son seguros URL, por lo que no se requiere codificación adicional.

Los JWT deben cumplir los siguientes requisitos:

  • El JWT debe estar firmado utilizando el algoritmo RS256 (RSA, SHA-256).
  • El JWT no debe estar cifrado.
  • El JWT debe incluir las siguientes reclamaciones registradas.
Reclamo Nombre Tipo Propósito
iss Emisor CadenaOrURI Vinyl hará coincidir el emisor con el emisor configurado del proveedor de seguridad, realizando una comparación que distingue entre mayúsculas y minúsculas.
sub Asunto CadenaOrURI Vinyl relacionará el tema con una cuenta de usuario de Vinyl.
aud Audiencia URI Vinyl hará coincidir la audiencia con la audiencia configurada por el proveedor de seguridad. Ejemplo: https://example.com/Vinyl
exp Tiempo de vencimiento Fecha numérica Vinyl validará que la fecha de vencimiento sea menor que la fecha actual, teniendo en cuenta el desfase del reloj.
nbf No antes Fecha numérica Vinyl validará que la fecha y hora actuales sean mayores que el valor No antes, teniendo en cuenta la desviación del reloj.
iat Emitido en Fecha numérica Vinyl utilizará el valor de emisión para determinar la antigüedad del JWT. Vinyl limitará la ventana en la que se acepta una ficha a, por ejemplo, 5 minutos.
jti ID de JWT Fecha numérica Vinyl utilizará el ID de JWT para evitar ataques de repetición.

Las reclamaciones registradas por JWT se describen en la Sección 4.1 del estándar JSON Web Token.

El JWT puede contener afirmaciones adicionales. Como ocurre con todos los proveedores de seguridad de Vinyl, los reclamos pueden ser:

  • Se utiliza para aprovisionar cuentas de usuario y proporcionar membresía a grupos de seguridad.
  • Asignado a propiedades de la cuenta de usuario, como el nombre de usuario, la dirección de correo o el número de teléfono.
  • Se accede mediante reglas de negocio utilizando mvSQL. claim() función de tiempo de ejecución.

Ejemplo de carga útil JWT:

{
  "jti": "918b6e73-400d-479c-baa1-8e12f5fd78f4",
  "iss": "example.com",
  "aud": "https://example.com/Vinyl",
  "sub": "Arthurd.Dent",
  "iat": 1652473593,
  "exp": 1652473893,
  "groups": [
    "Users",
    "Employees",
    "Sales"
  ]
}
Volver a

El return_to El parámetro consta de un URI. El URI es relativo al directorio raíz de la aplicación Vinyl. Debe tener como prefijo una barra diagonal.

Ejemplo:

/app/Sales/Leads?LeadId=1234

Vinyl validará el URI para protegerse contra ataques de redireccionamiento abierto.

Métodos

CORREO

De forma predeterminada, el extremo de autenticación aceptará una publicación de formulario:

POST /Vinyl/signin-JWTSSO HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 31

jwt={jwt}&return_to={return_to}
CONSEGUIR

Como alternativa, el extremo de autenticación también puede configurarse para aceptar GET peticiones:

GET /Vinyl/signin-JWTSSO?jwt={jwt}&return_to={return_to} HTTP/1.1
Host: example.com

Al usar el GET método, el token de seguridad JWT se pasa en la cadena de consultar URL.

Considere lo siguiente antes de usar GET:

  • GET plantea un riesgo adicional ya que las cadenas de consultar a menudo se escriben en archivos de registro del servidor web. Esto se puede mitigar garantizando que los tokens de seguridad tengan una vida útil corta y no puedan reproducirse.
  • Las URLs están sujetas a restricciones de longitud, normalmente en torno a los 2000 caracteres. Esto se puede mitigar limitando el número de reclamaciones.
  • El return_to El parámetro puede contener valores codificados en URL doble. Estas solicitudes pueden bloquearse mediante cortafuegos.

Servicio de Inicio de Sesión Único

El servicio de inicio de sesión único es el extremo al que Vinyl redirigirá a los usuarios cuando se emita un desafío. El Servicio de Inicio de Sesión Único es responsable de:

  1. Autenticar al usuario.
  2. Generando un JWT.
  3. Redirigir al usuario al Servicio de Autenticación.

El extremo del servicio de inicio de sesión único es opcional.

Configuración

Ajustes

  • Nombre: Nombre del proveedor de seguridad. El nombre aparece en la URL del Servicio de autenticación. También puede aparecer en el formulario de inicio de sesión.
  • Tipo: JWT SSO

Fichas

  • Audiencia: Audiencia. URI. Se utiliza para validar el JWT. aud afirmar. Ejemplo: https://example.com/Vinyl.
  • Emisor: Nombre del emisor. Cadena, URI recomendado. Se utiliza para validar el JWT. iss afirmar. Distingue mayúsculas y minúsculas.

Extremos

Tipo Descripción
Servicio de inicio de sesión único Ubicación a la que se redirigirá a los usuarios cuando se emita un desafío al proveedor de seguridad JWT SSO. URI absoluto opcional.

Certificados

Uso Tipo Descripción
Validación de firma Certificado X.509 Clave pública RSA Se utiliza para validar la firma JWT.

Propiedades

El proveedor de seguridad OAuth admite los siguientes parámetros adicionales:

Parámetro Predeterminado Descripción
PermitirHttpGet Falso Indica que el extremo de autenticación debe permitir HTTP GET peticiones.
Desviación del reloj 5 Número de minutos. Entero positivo. Se utiliza al validar el JWT. iat, nbf y exp reclamos.
Vida útil máxima 5 Número de minutos. Entero positivo. Se utiliza para validar el iat reclamo
Algoritmo de firma RS256 El algoritmo de firma JWT RS256 es el único algoritmo admitido actualmente.