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 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:

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

  1. Autenticar al usuario.
  2. Generar un JWT.
  3. 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.