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 conecte um usuário ao Vinyl. Isso é conseguido 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 pela Vinyl.
  • Serviço de logon único - hospedado por um serviço confiável de externo.

Serviço de Autenticação

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

  1. Autenticando um JWT.
  2. Cadastrando o usuário no Vinyl.

Exemplo:

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

Onde {Provider} é o nome do provedor de segurança do Vinyl. Consulte Configuração.

Parâmetros

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

  • jwt – Token Web JSON. Obrigatório.
  • return_to – URI relativo. Opcional.
Jwt

O jwt parâmetro 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 utilizando 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 O Vinyl combinará o emissor com o emissor configurado do provedor de segurança, realizando uma comparação que diferencia maiúsculas de minúsculas.
sub Assunto StringOrURI O Vinyl corresponderá o assunto a uma conta de usuário do Vinyl.
aud Público URI O Vinyl combinará o público com o público configurado do provedor de segurança. Exemplo: https://example.com/Vinyl
exp Tempo de expiração Data Numérica O Vinyl validará que a data de validade é inferior à data atual, levando em consideração a distorção do relógio.
nbf Não antes Data Numérica O Vinyl validará que a data e a hora atuais são maiores que o valor Not Before, levando em consideração a distorção do relógio.
iat Emitido em Data Numérica O Vinyl usará o valor Emitido em para determinar a idade do JWT. O Vinyl limitará a janela em que um token é aceito, por exemplo, 5 minutos.
jti ID do JWT Data Numérica O Vinyl usará o ID JWT para evitar ataques de repetição.

As reivindicações registradas pelo JWT estão descritas na Seção 4.1 do padrão JSON Web Token.

O JWT pode conter declarações adicionais. Tal como acontece com todos os fornecedores de segurança do Vinyl, 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 do 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 payload 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"
  ]
}
Voltou para

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

Exemplo:

/app/Sales/Leads?LeadId=1234

O Vinyl validará o URI para proteção contra ataques de redirecionamento aberto.

Métodos

PUBLICAR

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

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

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

GET /Vinyl/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 geralmente são 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.
  • Os URLs estão sujeitos a restrições de comprimento, normalmente em torno de 2.000 caracteres. Isto pode ser mitigado limitando o número de reclamações.
  • O return_to O parâmetro pode conter valores codificados em URL duplo. Tais solicitações podem ser bloqueadas por firewalls.

Serviço de Logon Único

O serviço Single Sign-On é o endpoint para o qual o Vinyl redirecionará os usuários quando um desafio for lançado. 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 no URLServiço de Autenticação. Também pode aparecer no formulário de login.
  • Tipo: JWT SSO

Fichas

  • Público: Público. URI. Usado para validar o JWT aud alegar. Exemplo: https://example.com/Vinyl.
  • Emissor: Nome do emissor. String, URI recomendado. Usado para validar o JWT iss alegar. 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. URI absoluto e 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 oferece suporte aos seguintes parâmetros adicionais:

Parâmetro Padrão Descrição
PermitirHttpGet Falso Indica que o endpoint de autenticação deve permitir HTTP GET solicitações de.
ClockSkew 5 Número de minutos. Inteiro positivo. Usado ao validar o JWT iat, nbf e exp reivindicações.
Tempo de vida máximo 5 Número de minutos. Inteiro positivo. Usado para validar o iat reivindicação
Algoritmo de assinatura RS256 O algoritmo de assinatura JWT RS256 é o único algoritmo suportado atualmente.