Português (Portugal)
  • declaração do cliente
  • tipo de declaração do cliente
  • gerar declaração do cliente
  • oidc
  • oauth

O que é a declaração do cliente na autenticação do cliente OAuth 2.0?

Introduz o que é a declaração do cliente e fornece um guia detalhado sobre como gerar uma declaração do cliente no OAuth 2.0. Também compara brevemente a declaração do cliente com o método tradicional de ID do cliente e segredo do cliente, oferecendo insights sobre como escolher a abordagem de autenticação mais adequada.

Yijun
Yijun
Developer

O que é a autenticação do cliente?

No OAuth 2.0, um "cliente" refere-se a uma aplicação que solicita acesso a um servidor de recursos. A autenticação do cliente é o processo pelo qual o servidor de autorização verifica a identidade do cliente solicitante.

Vamos explicar o comportamento da autenticação do cliente com dois fluxos de autenticação comuns do OAuth:

  • Fluxo do código de autorização: Aqui, o cliente primeiro precisa da autorização do utilizador (geralmente clicando num botão de consentimento numa página de consentimento do utilizador) para obter um código de autorização. Em seguida, o cliente usa este código e credenciais (geralmente um client_id e client_secret) para autenticação e solicita um token de acesso ao servidor de autorização.
  • Fluxo de credenciais do cliente: Neste fluxo, o cliente usa suas credenciais (geralmente um client_id e client_secret) para solicitar um token de acesso diretamente ao servidor de autorização sem uma etapa de autorização do utilizador.

O que é a declaração do cliente?

No OAuth 2.0, a declaração do cliente é um método eficiente e seguro para a autenticação do cliente. Comparado com o ID do cliente e segredo tradicional, a declaração do cliente usa JSON Web Tokens (JWT) para melhorar a segurança e flexibilidade, tornando o processo de autenticação mais confiável e informativo.

Os JWTs são compactos e auto-suficientes, transmitindo informações de forma segura entre as partes como objetos JSON. Um JWT contém declarações sobre uma entidade (geralmente o utilizador) e outros dados, incluindo:

  • iss (Emissor): O reclamante, geralmente o ID do cliente, indicando quem criou o JWT.
  • sub (Sujeito): Também tipicamente o ID do cliente, indicando o sujeito do JWT.
  • aud (Audiência): Referindo-se à URL do ponto de extremidade de token do servidor de autorização, mostrando para quem o JWT é destinado.
  • exp (Hora de Expiração): O tempo de expiração após o qual o JWT não é mais aceito.
  • iat (Emitido em): O tempo de emissão, marcando quando o JWT foi criado.
  • jti (ID do JWT): Um identificador único para o JWT, principalmente para evitar que o JWT seja reproduzido.

Esta combinação de informações fornece segurança incomparável sobre a autenticação tradicional de segredo do cliente, acrescentando flexibilidade e capacidades de controlo.

Como gerar uma declaração do cliente?

Vamos demonstrar como gerar uma declaração do cliente para o fluxo de credenciais do cliente OAuth 2.0, a declaração é aplicada principalmente quando o cliente solicita um token de acesso em seu próprio nome, sem envolvimento direto do utilizador.

Ao autenticar com uma declaração do cliente no OAuth 2.0, o client_assertion_type deve ser urn:ietf:params:oauth:client-assertion-type:jwt-bearer, e o parâmetro client_assertion carrega a declaração JWT do cliente. Aqui está um exemplo de código Node.js para gerar uma declaração JWT para autenticação do cliente:

Assegure a segurança do segredo do cliente e tome medidas apropriadas para evitar sua divulgação.

Qual é a diferença entre declaração do cliente e ID com segredo do cliente?

Usar ID do cliente e segredo do cliente é o método mais comum para autenticação de cliente.

Para aprender a diferença entre a declaração do cliente e ID e segredo do cliente, a melhor forma é ver os exemplos de uso de código.

Ao usar ID do cliente e segredo do cliente para autenticação do cliente, o cliente envia uma solicitação POST para o ponto de extremidade do token do servidor de autorização com as credenciais relacionadas ao cliente:

Como pode ver, o ID do Cliente com segredo é mais simples, mais fácil de implementar e suportado por quase todos os fornecedores de serviços OAuth. No entanto, tem algumas limitações:

  • O segredo do cliente é transmitido nas solicitações, tornando-o vulnerável à interceção em redes inseguras.
  • O segredo pode ser facilmente acedido por serviços não relacionados dentro de uma rede interna onde os serviços se comunicam uns com os outros sem TLS.
  • A combinação fixa de ID do cliente e segredo é suscetível a ataques de repetição.
  • Confiar unicamente no ID do cliente e segredo para autenticação limita a flexibilidade do mecanismo e impede o transporte de mais metadados do cliente ou informações personalizadas.

Deveria usar a declaração do cliente ou ID com segredo do cliente?

Como discutido, cada método de autenticação tem as suas vantagens e cenários aplicáveis. Ao integrar serviços OAuth 2.0, escolha a opção mais adequada com base nas necessidades específicas.

A declaração do cliente, com suas tecnologias de criptografia avançadas, oferecem proteção de dados e suportam cenários de autenticação complexos, permitindo fácil expansão futura. No entanto, devido à sua complexidade e à necessidade de um entendimento profundo de JWT e seus mecanismos de criptografia, a autenticação mais simples por ID do cliente e segredo pode ser mais apropriada para equipas com recursos limitados ou que procuram uma implementação rápida.

Resumo

Este artigo discutiu a aplicação de declarações de cliente na autenticação de cliente OAuth 2.0, comparando-a com métodos tradicionais de autenticação por ID e segredo do cliente. A declaração do cliente oferece maior segurança e flexibilidade para necessidades de segurança complexas, mas também implica maior complexidade na implementação. Na prática, escolha a opção mais adequada com base em requisitos específicos e conhecimentos técnicos para atender às necessidades de desenvolvimento de negócios.