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:
- Autenticar un JWT.
- 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:
- Autenticación del usuario.
- Generar un JWT.
- 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. |