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:
- Autenticar un JWT.
- 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:
- Autenticar al usuario.
- Generando un JWT.
- 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. |