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.
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.
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.
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.
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
- Saiba como autenticar clientes usando a cadeia de certificados
- Saiba como autenticar o cliente usando o token de ID do Microsoft Entra