Partilhar via


Autenticação de cliente MQTT usando certificados

O agente MQTT da Grade de Eventos do Azure dá suporte à autenticação de clientes usando certificados X.509. O certificado X.509 fornece as credenciais para associar um cliente específico ao locatário. Neste modelo, a autenticação geralmente acontece uma vez durante o estabelecimento da sessão. Em seguida, todas as operações futuras usando a mesma sessão são assumidas como provenientes dessa identidade.

Os modos de autenticação suportados são:

  • Certificados emitidos por uma Autoridade de Certificação (CA)
  • Certificado de cliente auto-assinado - impressão digital
  • Token de ID do Microsoft Entra

Este artigo concentra-se nos certificados. Para saber mais sobre a autenticação usando tokens de ID do Microsoft Entra, consulte Autenticar cliente usando o token de ID do Microsoft Entra.

Certificados assinados pela Autoridade de Certificação (CA)

Nesse método, um certificado X.509 raiz ou intermediário é registrado no serviço. Essencialmente, o certificado raiz ou intermediário que é usado para assinar o certificado do cliente, deve ser registrado com o serviço primeiro.

Importante

  • Certifique-se de carregar o certificado raiz ou intermediário usado para assinar o certificado do cliente. Não é necessário carregar toda a cadeia de certificados.
  • Por exemplo, se você tiver uma cadeia de certificados raiz, intermediário e folha, certifique-se de carregar o certificado intermediário que assinou os certificados folha/cliente.

Captura de tela mostrando a página de certificados de autoridade de certificação com certificados raiz e intermediários usados para assinar os certificados de cliente.

Ao registrar clientes, você precisa identificar o campo de certificado usado para armazenar o nome de autenticação do cliente. O serviço faz a correspondência entre o nome de autenticação do certificado e o nome de autenticação do cliente nos metadados do cliente para validar o cliente. O serviço também valida o certificado do cliente, verificando se ele está assinado pelo certificado raiz ou intermediário registrado anteriormente.

Captura de tela mostrando os metadados do cliente com os cinco esquemas de validação baseados na cadeia de certificados.

Certificado de cliente auto-assinado - impressão digital

Nesse método de autenticação, o registro do cliente armazena a impressão digital exata do certificado que o cliente usará para autenticar. Quando o cliente tenta se conectar ao serviço, o serviço valida o cliente comparando a impressão digital apresentada no certificado do cliente com a impressão digital armazenada nos metadados do cliente.

Captura de tela mostrando os metadados do cliente com esquema de autenticação de impressão digital.

Nota

  • Recomendamos que você inclua o nome de autenticação do cliente no campo username do pacote de conexão do cliente. Usando esse nome de autenticação junto com o certificado do cliente, o serviço poderá autenticar o cliente.
  • Se você não fornecer o nome de autenticação no campo username, precisará configurar os campos de origem alternativos para o nome de autenticação do cliente no escopo do namespace. O serviço procura o nome da autenticação do cliente no campo correspondente do certificado do cliente para autenticar a conexão do cliente.

Na página de configuração no escopo do namespace, você pode habilitar fontes alternativas de nome de autenticação de cliente e, em seguida, selecionar os campos de certificado de cliente que têm o nome de autenticação de cliente.

Captura de tela mostrando a página de configuração do namespace com as configurações de origem alternativa do nome de autenticação do cliente.

A ordem de seleção dos campos de certificado do cliente na página de configuração do namespace é importante. O serviço procura o nome de autenticação do cliente nos campos de certificado do cliente na mesma ordem.

Por exemplo, se você selecionar a opção DNS do certificado primeiro e, em seguida, a opção Nome da entidade - ao autenticar a conexão do cliente,

  • service verifica o campo DNS do nome alternativo do assunto do certificado do cliente primeiro para o nome de autenticação do cliente
  • se o campo DNS estiver vazio, o serviço verificará o campo Nome do Assunto do certificado do cliente
  • Se o nome de autenticação do cliente não estiver presente em nenhum desses dois campos, a conexão do cliente será negada

Em ambos os modos de autenticação de cliente, esperamos que o nome de autenticação do cliente seja fornecido no campo username do pacote de conexão ou em um dos campos de certificado do cliente.

Campos de certificado de cliente suportados para fonte alternativa de nome de autenticação de cliente

Você pode usar um dos seguintes campos para fornecer o nome de autenticação do cliente no certificado do cliente.

Opção de origem do nome de autenticação Campo Certificado Description
Nome do Assunto do Certificado tls_client_auth_subject_dn O nome distinto do assunto do certificado.
Certificado Dns tls_client_auth_san_dns A dNSName entrada SAN no certificado.
Uri do certificado tls_client_auth_san_uri A uniformResourceIdentifier entrada SAN no certificado.
Certificado Ip tls_client_auth_san_ip O endereço IPv4 ou IPv6 presente na entrada SAN iPAddress no certificado.
E-mail do certificado tls_client_auth_san_email A rfc822Name entrada SAN no certificado.

Próximos passos