Clientes MQTT

Neste artigo, você aprenderá a configurar clientes MQTT e grupos de clientes.

Clientes

Os clientes podem ser dispositivos ou aplicativos, como dispositivos ou veículos que enviam/recebem mensagens MQTT.

Por exemplo, considere uma empresa de gerenciamento de frota com centenas de caminhões e outros veículos de entrega de remessa. Você pode aprimorar o roteamento, o acompanhamento, a segurança do driver e as funcionalidades de manutenção previsível enviando e recebendo mensagens MQTT em um serviço de nuvem.

Nesse cenário, os veículos podem ser configurados como clientes que fazem publicações em vários tópicos e os assinam, como informações meteorológicas, condições das estradas, localização geográfica, desempenho do motor e outros aspectos de desgaste do veículo. E, ao configurar o veículo como um cliente, um conjunto de atributos como tipo de veículo, ano, marca e modelo, capacidade máxima de carga, etc. também podem ser incluídos nos metadados do cliente.

Observação

  • O nome do cliente pode ter entre 1 e 128 caracteres.
  • O nome do cliente pode incluir caracteres alfanuméricos, hífen (-), dois-pontos (:), ponto (.) e sublinhado (_) e não pode conter espaços. Ele diferencia maiúsculas de minúsculas e precisa ser exclusivo por namespace.

Principais termos de metadados do cliente

Nome de Autenticação do Cliente: forneça um identificador exclusivo para o cliente sem restrições de nomenclatura do Azure Resource Manager. É um campo obrigatório e, se o nome não for fornecido explicitamente, ele usará o Nome do Cliente como padrão.

Dois clientes não podem ter o mesmo nome de autenticação em um namespace. Ao autenticarmos um cliente, tratamos o Nome de autenticação do cliente como não diferenciando maiúsculas de minúsculas.

Preservamos as maiúsculas e minúsculas originais do nome de autenticação do cliente que você configura no cliente. Usamos o nome original de autenticação do cliente (diferencia maiúsculas de minúsculas) fornecido quando o cliente foi criado, em enriquecimentos de roteamento, correspondência de espaços de tópicos etc.

Observação

  • O nome de autenticação do cliente pode ter entre 1 e 128 caracteres, cadeias de caracteres UTF-8, sem restrições
  • O nome de autenticação do cliente diferencia maiúsculas de minúsculas e precisa ser exclusivo por namespace (as maiúsculas e minúsculas são ignoradas ao determinar a exclusividade)

Esquema de Validação de Autenticação de Certificado do Cliente: para usar o Certificado de Autoridade de Certificação para autenticação, você pode escolher uma das opções a seguir para especificar o local da identidade do cliente no certificado do cliente. Quando o cliente tenta se conectar ao serviço, o serviço localiza a identificação do cliente desse campo de certificado e o corresponde com o nome de autenticação do cliente para autenticar o cliente.

Damos suporte a cinco campos de certificado:

  • Correspondência entre entidade e nome de autenticação
  • Correspondência entre DNS e nome de autenticação
  • Correspondência entre URI e nome de autenticação
  • Correspondência entre IP e nome de autenticação
  • Correspondência entre email e nome de autenticação

Use a opção "Correspondência de Impressão Digital" ao usar o certificado autoassinado para autenticar o cliente.

Observação

  • clientCertificateAuthentication é sempre obrigatório com um valor válido de validationScheme.
  • authenticationName não é obrigatório, mas após a primeira solicitação de criação, o valor authenticatioName usa como padrão o nome do ARM e, em seguida, não pode ser atualizado.
  • authenticationName não pode ser atualizado.
  • Se validationScheme for algo diferente de ThumbprintMatch, a lista allowedThumbprints não poderá ser fornecida.
  • A lista allowedThumbprints só pode ser fornecida e precisa ser fornecida se validationScheme é ThumbprintMatch com, pelo menos, uma impressão digital.
  • allowedThumbprints só pode conter, no máximo, duas impressões digitais.
  • Os valores permitidos de validationScheme são SubjectMatchesAuthenticationName, DnsMatchesAuthenticationName, UriMatchesAuthenticationName, IpMatchesAuthenticationName, EmailMatchesAuthenticationName e ThumbprintMatch
  • O uso da impressão digital com permite a reutilização do mesmo certificado em vários clientes. Para outros tipos de validação, o nome de autenticação precisa estar no campo escolhido do certificado do cliente.

Atributos de cliente

Os atributos de cliente são um conjunto de pares chave-valor definidos pelo usuário ou marcas que fornecem informações sobre o cliente.

Esses atributos de cliente podem ser usados para criar os grupos de clientes. Por exemplo, você pode agrupar todos os veículos do tipo carreta em um grupo e todos os veículos do tipo caminhonete em outro.

Esses atributos são usados nas consultas do grupo de clientes para filtrar um conjunto de clientes. Os atributos podem descrever as características físicas ou funcionais do cliente. O atributo típico pode ser o "tipo" do cliente.

Aqui está um exemplo:

  • Tipo: os valores podem ser "sensor", "termostato" ou "veículo"

Veja um exemplo de esquema para o cliente com a definição de atributo:

{  
    "id": "device123",  
    "attributes": {  
        "type": "home-sensors",
        "sensors": ["motion", "noise", "light"]
     }
}

Ao configurar os atributos do cliente, considere os tópicos nos quais os clientes fazem publicações (assinam). Pensar de trás para frente de tópicos para clientes ajuda a identificar mais facilmente as semelhanças entre as funções de cliente e definir os atributos de cliente, a fim de simplificar o agrupamento de clientes.

Observação

  • As chaves de atributo do cliente precisam ser exclusivas no cliente. As chaves não podem ser repetidas.
  • Os valores de atributo do cliente podem ser dos tipos string, integer ou array of strings.
  • O tamanho total dos atributos de um cliente precisa ser sempre menor que 4 KB.
  • O nome do atributo do cliente (chave) só pode conter caracteres alfanuméricos e sublinhado (_).

Exemplos de contratos

Exemplo de autenticação do cliente baseada em cadeia de certificados

{
    "properties": {
        "authenticationName": "127.0.0.1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "IpMatchesAuthenticationName"
        },
        "attributes": {
            "room": "345",
            "floor": 3,
            "bldg": "17"
        },
        "description": "Description of the client"
    }
}

Exemplo de autenticação do cliente baseada em impressão digital do certificado autoassinado

{
    "properties": {
        "authenticationName": "abcd@domain.com-1",
        "state": "Enabled",
        "clientCertificateAuthentication": {
            "validationScheme": "ThumbprintMatch",
            "allowedThumbprints": ["primary", "secondary"]
        },
        "attributes": {
            "room": "345",
            "floor": "3",
            "bldg": 17
        },
        "description": "Description of the client"
    }
}

Configuração do portal do Azure

Use as seguintes etapas para criar um cliente:

  1. Acessar seu namespace no portal do Azure

  2. Em Clientes, selecione + Cliente.

    Screenshot of adding a client.

  3. Escolha o esquema de validação de autenticação do certificado do cliente. Para obter mais informações sobre a configuração de autenticação do cliente, confira o artigo Autenticação do cliente.

  • Adicione atributos do cliente.

    Screenshot of client configuration.

  1. Escolha Criar

Configuração da CLI do Azure

Use os comandos a seguir para criar/mostrar/excluir um cliente

Criar cliente

az eventgrid namespace client create -g myRG --namespace-name myNS -n myClient

Obter um cliente

az eventgrid namespace client show -g myRG --namespace-name myNS -n myClient

Excluir o cliente

az eventgrid namespace client delete -g myRG --namespace-name myNS -n myClient

Próximas etapas