Proveedor de seguridad JWT SSO en Jitterbit App Builder
El proveedor de seguridad JWT SSO es una implementación de un protocolo personalizado de inicio de sesión único (SSO). El protocolo permite que un servicio de confianza inicie sesión de un usuario en App Builder. Esto se logra generando un JSON Web Token (JWT) y pasando el token a un endpoint de autenticación a través de una redirección del navegador del cliente.
Protocolo
El protocolo JWT SSO aprovecha los siguientes estándares:
Endpoints
El protocolo JWT SSO define dos endpoints de servicio.
- Servicio de autenticación - Alojado por App Builder.
- Servicio de inicio de sesión único - Alojado por el servicio de terceros de confianza.
Servicio de autenticación
El servicio de autenticación es responsable de:
- Autenticar un JWT.
- Iniciar sesión del usuario en App Builder.
Ejemplo:
https://example.com/Vinyl/signin-{Provider}
Donde {Provider} es el esquema del proveedor de seguridad de App Builder. Consulta Configuración.
Parámetros
El endpoint del servicio de autenticación define los siguientes parámetros:
jwt– JSON Web Token. Requerido.return_to– URI relativa. Opcional.
JWT
El parámetro jwt contiene el JSON Web Token. Los JWT son seguros para URL, por lo que no se requiere codificación adicional.
Los JWT deben cumplir con los siguientes requisitos:
- El JWT debe estar firmado usando el algoritmo RS256 (RSA, SHA-256).
- El JWT no debe estar encriptado.
- El JWT debe incluir los siguientes claims registrados.
| Claim | Nombre | Tipo | Propósito |
|---|---|---|---|
iss |
Emisor | StringOrURI | App Builder hará coincidir el emisor con el emisor configurado del proveedor de seguridad, realizando una comparación sensible a mayúsculas y minúsculas. |
sub |
Asunto | StringOrURI | App Builder hará coincidir el asunto con una cuenta de usuario de App Builder. |
aud |
Audiencia | URI | App Builder hará coincidir la audiencia con la audiencia configurada del proveedor de seguridad. Ejemplo: https://example.com/Vinyl |
exp |
Hora de expiración | NumericDate | App Builder validará que la fecha de expiración sea menor que la fecha actual, teniendo en cuenta la desviación del reloj. |
nbf |
No antes de | NumericDate | App Builder validará que la fecha y hora actual sea mayor que el valor No antes de, teniendo en cuenta la desviación del reloj. |
iat |
Emitido en | NumericDate | App Builder utilizará el valor Emitido en para determinar la antigüedad del JWT. App Builder limitará la ventana en la que se acepta un token a, por ejemplo, 5 minutos. |
jti |
ID de JWT | NumericDate | App Builder utilizará el ID de JWT para prevenir ataques de repetición. |
Los claims registrados de JWT se describen en la Sección 4.1 del estándar JSON Web Token.
El JWT puede contener claims adicionales. Como con todos los proveedores de seguridad de App Builder, los claims pueden:
- Usarse para aprovisionar cuentas de usuario y proporcionar membresía de grupos de seguridad
- Asignarse a propiedades de cuentas de usuario como el nombre de usuario, dirección de correo electrónico o número de teléfono.
- Accederse mediante reglas de negocio usando la función de tiempo de ejecución
claim()de mvSQL.
Ejemplo de una carga útil de 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"
]
}
return_to
El parámetro return_to consiste en una URI. La URI es relativa al directorio raíz de la aplicación App Builder. Debe tener el prefijo de una barra diagonal inicial.
/app/Sales/Leads?LeadId=1234
App Builder validará el URI para protegerse contra ataques de redirección abierta.
Métodos
Post
De forma predeterminada, el endpoint de autenticación aceptará un formulario POST:
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}
Get
Como alternativa, el endpoint de autenticación también puede configurarse para aceptar solicitudes GET:
GET /Vinyl/signin-JWTSSO?jwt={jwt}&return_to={return_to} HTTP/1.1
Host: example.com
Al usar el método GET, el token de seguridad JWT se pasa en la cadena de consulta de la URL.
Considera lo siguiente antes de usar GET:
GETpresenta riesgo adicional ya que las cadenas de consulta a menudo se escriben en los archivos de registro del servidor web. Esto se puede mitigar asegurando que los tokens de seguridad tengan una vida útil corta y no se puedan reproducir.- Las URLs están sujetas a restricciones de longitud, típicamente alrededor de 2,000 caracteres. Esto se puede mitigar limitando el número de reclamaciones.
- El parámetro
return_topuede contener valores con doble codificación de URL. Los firewalls pueden bloquear tales solicitudes.
Servicio de inicio de sesión único
El Servicio de Inicio de Sesión Único es el endpoint al que App Builder redirigirá a los usuarios cuando se emita un desafío. El Servicio de Inicio de Sesión Único es responsable de:
- Autenticar al usuario.
- Generar un JWT.
- Redirigir al usuario al Servicio de Autenticación.
El endpoint del Servicio de Inicio de Sesión Único es opcional.
Configuración
Configuración
- Nombre: Nombre del proveedor de seguridad. El nombre puede aparecer en el formulario de inicio de sesión.
- Esquema: Esquema del proveedor de seguridad. El esquema aparece en la URL del Servicio de Autenticación.
- Tipo: JWT SSO
Tokens
- Audiencia: Audiencia. URI. Se utiliza para validar la reclamación
audde JWT. Ejemplo:https://example.com/Vinyl. - Emisor: Nombre del emisor. Cadena, se recomienda URI. Se utiliza para validar la reclamación
issde JWT. Distingue mayúsculas de minúsculas.
Endpoints
| 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. Opcional, URI absoluto. |
Certificados
| Uso | Tipo | Descripción |
|---|---|---|
| Validación de Firma | Certificado X.509 | Clave Pública RSA utilizada para validar la firma JWT. |
Propiedades
El proveedor de seguridad OAuth admite los siguientes parámetros adicionales:
| Parámetro | Predeterminado | Descripción |
|---|---|---|
| AllowHttpGet | False | Indica que el endpoint de autenticación debe permitir solicitudes HTTP GET. |
| ClockSkew | 5 | Número de minutos. Entero positivo. Se utiliza al validar las reclamaciones iat, nbf y exp de JWT. |
| MaxLifetime | 5 | Número de minutos. Entero positivo. Se utiliza para validar la reclamación iat |
| SigningAlgorithm | RS256 | Algoritmo de firma JWT. RS256 es el único algoritmo actualmente compatible. |