Saltar al contenido

Proveedor de Seguridad: JWT SSO

El proveedor de seguridad SSO JWT es una despliegue de un protocolo de inicio de sesión único (SSO) personalizado. El protocolo permite que un servicio confiable inicie sesión con un usuario App Builder 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 - Alojado por App Builder.
  • Servicio de inicio de externo confiable.

Servicio de Autenticación

El servicio de autenticación es responsable de:

  1. Autenticar un JWT.
  2. Iniciar la sesión del usuario App Builder.

Ejemplo:

https://example.com/App Builder/signin-{Provider}

Dónde {Provider} es el App Builder nombre del proveedor de seguridad. Ver Configuración.

Parámetros

El extremo del servicio de autenticación define los siguientes parámetros:

  • jwt– Token web JSON. Obligatorio.
  • 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 StringOrURI App Builder hará coincidir el emisor con el emisor configurado del proveedor de seguridad, realizando una comparación que distingue entre mayúsculas y minúsculas.TABLEROWEND
sub Asunto StringOrURI App Builder hará coincidir el tema con an App Builder cuenta de usuario.
aud Audiencia URI App Builder hará coincidir la audiencia con la audiencia configurada del proveedor de seguridad. Ejemplo: https://example.com/App Builder
exp Hora de expiración Fecha numérica App Builder validará que la fecha de vencimiento sea menor que la fecha actual, teniendo en cuenta el desfase horario.TABLEROWEND
nbf No antes de Fecha numérica App Builder validará que la fecha y hora actuales sean mayores que el valor No antes, teniendo en cuenta el desfase horario.
iat Emitido en Fecha numérica 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 Fecha numérica App Builder utilizará el ID JWT para evitar ataques de repetición.TABLEROWEND las reclamaciones registradas en JWT se describen en la Sección 4.1 del estándar JSON Web Token.

El JWT puede contener declaraciones adicionales. Como ocurre con todos los App Builder proveedores de seguridad, las reclamaciones 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 una carga útil JWT:

{
  "jti": "918b6e73-400d-479c-baa1-8e12f5fd78f4",
  "iss": "example.com",
  "aud": "https://example.com/App Builder",
  "sub": "Arthurd.Dent",
  "iat": 1652473593,
  "exp": 1652473893,
  "groups": [
    "Users",
    "Employees",
    "Sales"
  ]
}
Volver a

El return_to el parámetro consta de una URI. La URI es relativa a la App Builder directorio raíz de la aplicación. Debe ir precedido de una barra diagonal.

Ejemplo:

/app/Sales/Leads?LeadId=1234

App Builder validará la 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 /App Builder/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 solicitudes:

GET /App Builder/signin-JWTSSO?jwt={jwt}&return_to={return_to} HTTP/1.1
Host: example.com

Al utilizar el GET método, el token de seguridad JWT se pasa en la cadena de consultar de URL.

Tenga en cuenta lo siguiente antes de utilizar GET:

  • GET esto plantea un riesgo adicional, ya que las cadenas de consultar suelen escribirse en archivos de registro del servidor web. Esto se puede mitigar garantizando que los tokens de seguridad tengan una vida útil corta y no se puedan reproducir.
  • Las URLs están sujetas a restricciones de longitud, que suelen rondar los 2000 caracteres. Esto se puede mitigar limitando la cantidad de solicitudes.
  • El return_to el parámetro puede contener valores con doble codificación URL. Los firewalls pueden bloquear dichas solicitudes.

Servicio de Inicio de Sesión Único

El servicio de inicio de sesión único es el extremo que App Builder redireccionará a los usuarios cuando se emita un desafío. El servicio de inicio de sesión único es responsable de:

  1. Autenticación del usuario.
  2. Generar un JWT.
  3. 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 reclamación. Ejemplo: https://example.com/App Builder.
  • Emisor: Nombre del emisor. Cadena, URI recomendado. Se utiliza para validar el JWT iss reclamación. Distingue entre 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 envíe un desafío al proveedor de seguridad de inicio de sesión único JWT. URI absoluta 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
AllowHttpGet False Indica que el extremo de autenticación debe permitir HTTP GET solicitudes.TABLEROWEND
ClockSkew 5 Número de minutos. Entero positivo. Se utiliza al validar el JWT. iat, nbf y exp reclamaciones.TABLEROWEND
MaxLifetime 5 Número de minutos. Entero positivo. Se utiliza para validar la iat reclamar
Algoritmo de firma RS256 Algoritmo de firma JWT RS256 es el único algoritmo compatible actualmente.