Ir para o conteúdo

Provedor de Segurança - JWT SSO

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 assine um usuário App Builder. Isso é obtido 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 por App Builder.
  • Serviço de logon único - Hospedado por um serviço externo confiável.

Serviço de Autenticação

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

  1. Autenticar um JWT.
  2. Assinar o usuário em App Builder.

Exemplo:

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

Onde {Provider} é o App Builder nome do provedor de segurança. Veja 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 relativo. Opcional.
JWT

O jwt o parâmetro contém o JSON Web Token. Os 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 reivindicações registradas.
Reivindicação Nome Tipo Finalidade
iss Emissor StringOrURI App Builder corresponderá o emissor ao emissor configurado pelo provedor de segurança, realizando uma comparação que diferencia maiúsculas de minúsculas.
sub Assunto StringOrURI App Builder corresponderá ao assunto an App Builder conta de usuário.
aud Público URI App Builder corresponderá o público ao público configurado do provedor de segurança. Exemplo: https://example.com/App Builder
exp Tempo de expiração Data Numérica App Builder validará que a data de expiração é menor que a data atual, levando em consideração o desvio do relógio.
nbf Não antes NumericDate App Builder validará que a data e a hora atuais são maiores que o valor Não Antes, levando em consideração a distorção do relógio.
iat Emitido em Data Numérica App Builder usará o valor Emitido em para determinar a idade do JWT. App Builder limitará a janela na qual um token é aceito para, por exemplo, 5 minutos.
jti ID JWT Data Numérica App Builder usará o ID JWT para evitar ataques de repetição.

As reivindicaçõ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 acontece com todos App Builder provedores de segurança, as reivindicações podem ser:

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

Exemplo de uma payload 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"
  ]
}
Retornar_para

O return_to parâmetro consiste em um URI. O URI é relativo ao App Builder diretório raiz do aplicativo. Ele deve ser prefixado com uma barra inicial.

Exemplo:

/app/Sales/Leads?LeadId=1234

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

Métodos

Publicar

Por padrão, o endpoint de autenticação aceitará uma postagem de formulário:

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}
Pegar

Como alternativa, o endpoint de autenticação também pode ser configurado para aceitar GET solicitações:

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

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

Considere o seguinte antes de usar GET:

  • GET representa um risco adicional, pois as strings de consultar 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 na vizinhança de 2.000 caracteres. Isso pode ser mitigado limitando o número de claims.
  • O return_to parâmetro pode conter valores codificados em URL duplo. Tais solicitações podem ser bloqueadas por firewalls.

Serviço de Login Único

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

  1. Autenticando o usuário.
  2. Gerando um JWT.
  3. Redirecionando 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 aparece na URL do Serviço de Autenticação. Ele também pode aparecer no formulário de login.
  • Tipo: JWT SSO

Fichas

  • Audience: Audiência. URI. Usado para validar o JWT aud reivindicação. Exemplo: https://example.com/App Builder.
  • Issuer: Nome do emissor. String, URI recomendado. Usado para validar o JWT iss reivindicação. Diferencia maiúsculas de minúsculas.

Endpoints

Tipo Descrição
Serviço de logon único Local para onde os usuários serão redirecionados quando um desafio for emitido para o provedor de segurança JWT SSO. URI absoluto opcional.

Certificados

Uso Tipo Descrição
Validação de assinatura Certificado X.509 Chave pública RSA Usada para validar a assinatura 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 HTTP GET solicitações.
ClockSkew 5 Número de minutos. Inteiro positivo. Usado ao validar o JWT iat, nbf e exp reivindicações.
MaxLifetime 5 Número de minutos. Inteiro positivo. Usado para validar o iat reivindicar
SigningAlgorithm RS256 Algoritmo de assinatura JWT RS256 é o único algoritmo suportado atualmente.