Ir para o conteúdo

Provedor de segurança JWT SSO no Jitterbit App Builder

O provedor de segurança JWT SSO é uma implementação de um protocolo de logon único (SSO) personalizado. O protocolo permite que um serviço confiável faça login de um usuário no App Builder. Isso é feito gerando um JSON Web Token (JWT) e passando o token para um endpoint de autenticação por meio de um redirecionamento do navegador do cliente.

Protocolo

O protocolo JWT SSO aproveita os seguintes padrões:

Endpoints

O protocolo JWT SSO define dois endpoints de serviço.

  • Serviço de Autenticação - Hospedado pelo App Builder.
  • Serviço de Logon Único - Hospedado pelo serviço terceirizado confiável.

Serviço de autenticação

O serviço de autenticação é responsável por:

  1. Autenticar um JWT.
  2. Fazer login do usuário no App Builder.

Exemplo:

https://example.com/Vinyl/signin-{Provider}

Onde {Provider} é o esquema do provedor de segurança do App Builder. Consulte Configuração.

Parâmetros

O endpoint do serviço de autenticação define os seguintes parâmetros:

  • jwt – JSON Web Token. Obrigatório.
  • return_to – URI relativa. Opcional.
JWT

O parâmetro jwt contém o JSON Web Token. JWTs são seguros para URL, portanto nenhuma codificação adicional é necessária.

Os JWTs devem atender aos seguintes requisitos:

  • O JWT deve ser assinado usando o algoritmo RS256 (RSA, SHA-256).
  • O JWT não deve ser criptografado.
  • O JWT deve incluir as seguintes declarações registradas.
Declaração Nome Tipo Finalidade
iss Issuer StringOrURI O App Builder fará correspondência do emissor com o emissor configurado do provedor de segurança, realizando uma comparação sensível a maiúsculas e minúsculas.
sub Subject StringOrURI O App Builder fará correspondência do assunto com uma conta de usuário do App Builder.
aud Audience URI O App Builder fará correspondência do público com o público configurado do provedor de segurança. Exemplo: https://example.com/Vinyl
exp Expiration Time NumericDate O App Builder validará que a data de expiração é anterior à data atual, levando em conta a defasagem de relógio.
nbf Not Before NumericDate O App Builder validará que a data e hora atuais são posteriores ao valor Not Before, levando em conta a defasagem de relógio.
iat Issued At NumericDate O App Builder usará o valor Issued At para determinar a idade do JWT. O App Builder limitará a janela em que um token é aceito, por exemplo, 5 minutos.
jti JWT ID NumericDate O App Builder usará o JWT ID para evitar ataques de repetição.

As declarações registradas do JWT são descritas na Seção 4.1 do padrão JSON Web Token.

O JWT pode conter declarações adicionais. Como com todos os provedores de segurança do App Builder, as declarações podem ser:

  • Usadas para provisionar contas de usuário e fornecer associação a grupos de segurança
  • Mapeadas para propriedades de conta de usuário, como nome de usuário, endereço de email ou número de telefone.
  • Acessadas por regras de negócio usando a função de tempo de execução claim() do mvSQL.

Exemplo de 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

O parâmetro return_to consiste em uma URI. A URI é relativa ao diretório raiz da aplicação App Builder. Deve ser prefixada com uma barra inicial.

/app/Sales/Leads?LeadId=1234

O App Builder validará a URI para proteger contra ataques de redirecionamento aberto.

Métodos

Post

Por padrão, o endpoint de autenticação aceitará um formulário enviado por 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, o endpoint de autenticação também pode ser configurado para aceitar requisições GET:

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

Ao usar o método GET, o token de segurança JWT é passado na string de consulta da URL.

Considere o seguinte antes de usar GET:

  • GET apresenta risco adicional, pois strings de consulta são frequentemente gravadas em arquivos de log do servidor web. Isso pode ser mitigado garantindo que os tokens de segurança tenham uma vida útil curta e não possam ser reproduzidos.
  • URLs estão sujeitas a restrições de comprimento, tipicamente em torno de 2.000 caracteres. Isso pode ser mitigado limitando o número de claims.
  • O parâmetro return_to pode conter valores com URL dupla codificada. Tais requisições podem ser bloqueadas por firewalls.

Serviço de logon único

O Serviço de Logon Único é o endpoint para o qual o App Builder redirecionará os usuários quando um desafio for emitido. O Serviço de Logon Único é responsável por:

  1. Autenticar o usuário.
  2. Gerar um JWT.
  3. Redirecionar o usuário para o Serviço de Autenticação.

O endpoint do Serviço de Logon Único é opcional.

Configuração

Configurações

  • Nome: Nome do provedor de segurança. O nome pode aparecer no formulário de login.
  • Esquema: Esquema do provedor de segurança. O esquema aparece na URL do Serviço de Autenticação.
  • Tipo: JWT SSO

Tokens

  • Audience: Audience. URI. Usado para validar o claim aud do JWT. Exemplo: https://example.com/Vinyl.
  • Issuer: Nome do emissor. String, URI recomendada. Usado para validar o claim iss do JWT. Sensível a maiúsculas e minúsculas.

Endpoints

Tipo Descrição
Serviço de Logon Único Local para o qual os usuários serão redirecionados quando um desafio for emitido para o provedor de segurança JWT SSO. Opcional, URI absoluta.

Certificados

Uso Tipo Descrição
Validação de Assinatura Certificado X.509 Chave Pública RSA usada para validar a assinatura do JWT.

Propriedades

O provedor de segurança OAuth suporta os seguintes parâmetros adicionais:

Parâmetro Padrão Descrição
AllowHttpGet False Indica que o endpoint de autenticação deve permitir requisições HTTP GET.
ClockSkew 5 Número de minutos. Inteiro positivo. Usado ao validar os claims iat, nbf e exp do JWT.
MaxLifetime 5 Número de minutos. Inteiro positivo. Usado para validar o claim iat
SigningAlgorithm RS256 Algoritmo de assinatura JWT RS256 é o único algoritmo atualmente suportado.