Saltar al contenido

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:

  1. Autenticar un JWT.
  2. 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:

  • GET presenta 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_to puede 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:

  1. Autenticar al usuario.
  2. Generar un JWT.
  3. 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 aud de JWT. Ejemplo: https://example.com/Vinyl.
  • Emisor: Nombre del emisor. Cadena, se recomienda URI. Se utiliza para validar la reclamación iss de 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.