Proveedor de seguridad JWT SSO en Jitterbit App Builder
El proveedor de seguridad JWT SSO es una implementación de un protocolo de inicio de sesión único (SSO) personalizado. El protocolo permite que un servicio de confianza inicie sesión a un usuario en App Builder. Esto se logra generando un Token Web JSON (JWT) y pasando el token a un punto final de autenticación mediante una redirección del navegador del cliente.
Protocolo
El protocolo JWT SSO aprovecha los siguientes estándares:
Puntos finales
El protocolo JWT SSO define dos puntos finales 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 al usuario en App Builder.
Ejemplo:
https://example.com/Vinyl/signin-{Provider}
Donde {Provider}
es el nombre del proveedor de seguridad de App Builder. Ver Configuración.
Parámetros
El punto final del servicio de autenticación define los siguientes parámetros:
jwt
– Token Web JSON. Requerido.return_to
– URI relativa. Opcional.
JWT
El parámetro jwt
contiene el Token Web JSON. 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 utilizando el algoritmo RS256 (RSA, SHA-256).
- El JWT no debe estar encriptado.
- El JWT debe incluir las siguientes reclamaciones registradas.
Reclamación | Nombre | Tipo | Propósito |
---|---|---|---|
iss |
Emisor | StringOrURI | App Builder comparará el emisor con el emisor configurado del proveedor de seguridad, realizando una comparación sensible a mayúsculas y minúsculas. |
sub |
Sujeto | StringOrURI | App Builder comparará el sujeto con una cuenta de usuario de App Builder. |
aud |
Audiencia | URI | App Builder comparará la audiencia con la audiencia configurada del proveedor de seguridad. Ejemplo: https://example.com/Vinyl |
exp |
Tiempo de Expiración | NumericDate | App Builder validará que la fecha de expiración sea anterior a la fecha actual, teniendo en cuenta la desviación del reloj. |
nbf |
No Antes | NumericDate | App Builder validará que la fecha y hora actuales sean posteriores al valor de No Antes, 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 reclamos registrados de JWT se describen en Sección 4.1 del estándar JSON Web Token.
El JWT puede contener reclamos adicionales. Al igual que con todos los proveedores de seguridad de App Builder, los reclamos pueden ser:
- Utilizados para aprovisionar cuentas de usuario y proporcionar membresía en grupos de seguridad.
- Mapeados a propiedades de cuentas de usuario como el nombre de usuario, dirección de correo electrónico o número de teléfono.
- Accedidos por reglas de negocio utilizando 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 de App Builder. Debe estar precedida por una barra inclinada.
Ejemplo:
/app/Sales/Leads?LeadId=1234
App Builder validará la URI para protegerse contra ataques de redirección abierta.
Methods
Post
Por defecto, el punto final de autenticación aceptará un envío 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}
Get
Como alternativa, el punto final 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 utilizar el método GET
, el token de seguridad JWT se pasa en la cadena de consulta de la URL.
Considere lo siguiente antes de usar GET
:
GET
presenta un 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 puedan ser reproducidos.- Las URL están sujetas a restricciones de longitud, típicamente en el orden de 2,000 caracteres. Esto se puede mitigar limitando el número de reclamos.
- El parámetro
return_to
puede contener valores codificados en URL dobles. Tales solicitudes pueden ser bloqueadas por cortafuegos.
Single sign-on service
El Servicio de Inicio de Sesión Único es el punto final 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 punto final del Servicio de Inicio de Sesión Único es opcional.
Configuración
Configuraciones
- 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
Tokens
- Audiencia: Audiencia. URI. Se utiliza para validar el reclamo
aud
del JWT. Ejemplo:https://example.com/Vinyl
. - Emisor: Nombre del emisor. Cadena, se recomienda URI. Se utiliza para validar el reclamo
iss
del JWT. Sensible a mayúsculas.
Puntos finales
Tipo | Descripción |
---|---|
Servicio de Inicio de Sesión Único | Ubicación a la que los usuarios serán redirigidos 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 del JWT. |
Propiedades
El proveedor de seguridad OAuth admite los siguientes parámetros adicionales:
Parámetro | Predeterminado | Descripción |
---|---|---|
AllowHttpGet | Falso | Indica que el punto final de autenticación debe permitir solicitudes HTTP GET . |
ClockSkew | 5 | Número de minutos. Entero positivo. Se utiliza al validar los reclamos iat , nbf y exp del JWT. |
MaxLifetime | 5 | Número de minutos. Entero positivo. Se utiliza para validar el reclamo iat |
SigningAlgorithm | RS256 | El algoritmo de firma JWT RS256 es el único algoritmo actualmente soportado. |