Pontos de extremidade upstream

O recurso de pontos de extremidade upstream permite ao Serviço do Azure SignalR enviar mensagens e eventos de conexão para um conjunto de pontos de extremidade no modo sem servidor. É possível usar os pontos de extremidade upstream para invocar um método de hub dos clientes no modo sem servidor para notificar os pontos de extremidade quando as conexões do cliente forem conectadas ou desconectadas.

Observação

Pontos de extremidade upstream só podem ser configurados no modo Sem servidor.

Configurações de ponto de extremidade upstream

As configurações de um ponto de extremidade upstream consistem em uma lista de itens sensíveis à ordem:

  • Um modelo de URL que especifica para onde as mensagens são enviadas.
  • Um conjunto de regras.
  • Configurações de autenticação.

Quando um evento é acionado, as regras de um item são verificadas uma por uma na ordem. As mensagens serão enviadas para a URL do ponto de extremidade upstream do primeiro item correspondente.

Configurações de modelo de URL

Você pode parametrizar a URL do ponto de extremidade upstream para dar suporte a vários padrões. Há três parâmetros predefinidos obrigatórios:

Parâmetro predefinido Descrição
{hub} Um hub é um conceito do Serviço do Azure SignalR. Um hub é uma unidade de isolamento. O escopo de usuários e a entrega de mensagens é restrito a um Hub.
{categoria} Uma categoria pode ter um dos seguintes valores:
  • conexões: eventos de tempo de vida da conexão. É acionado quando uma conexão do cliente é conectada ou desconectada. Inclui eventos conectados e desconectados.
  • mensagens: acionado quando os clientes invocam um método de hub. Ela inclui todos os outros eventos, exceto os eventos na categoria Conexões.
{evento} Na categoria mensagens, o evento é o destino em uma mensagem de invocação que os clientes enviam. Na categoria conexões, somente os valores conectado e desconectado são usados.

Esses parâmetros predefinidos podem ser usados no padrão de URL. Os parâmetros serão substituídos por um valor especificado durante a avaliação da URL do ponto de extremidade upstream. Por exemplo:

http://host.com/{hub}/api/{category}/{event}

Quando uma conexão do cliente no hub de "chat" estiver conectada, uma mensagem será enviada a esta URL:

http://host.com/chat/api/connections/connected

Quando um cliente no hub de "chat" invocar o método de hub broadcast, uma mensagem será enviada para esta URL:

http://host.com/chat/api/messages/broadcast

Referência de segredo do Key Vault em configurações de modelo de URL

A URL do ponto de extremidade upstream não é criptografada. Você pode proteger pontos de extremidade upstream confidenciais usando o Key Vault e acessá-los com uma identidade gerenciada.

Para habilitar a identidade gerenciada em sua instância de serviço do SignalR e permitir acesso ao cofre de chaves:

  1. Escolha uma identidade atribuída pelo sistema ou pelo usuário. Confira Como adicionar uma identidade gerenciada no portal do Azure.

  2. Conceda permissão de leitura secreta para a identidade gerenciada nas políticas de acesso no Key Vault. Confira Atribuir uma política de acesso do Key Vault usando o portal do Azure

  3. Substitua o texto confidencial pela sintaxe abaixo no padrão de URL do ponto de extremidade upstream:

    {@Microsoft.KeyVault(SecretUri=<secret-identity>)}
    

    O <secret-identity> deve ser o URI do plano de dados completo de um segredo no Key Vault, opcionalmente incluindo uma versão, por exemplo, https://myvault.vault.azure.net/secrets/mysecret/ ou https://myvault.vault.azure.net/secrets/mysecret/ec96f02080254f109c51a1f14cdb1931

    Por exemplo, uma referência completa seria semelhante ao seguinte:

    {@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
    

    Uma URL do ponto de extremidade upstream para a Função do Azure será semelhante a:

    https://contoso.azurewebsites.net/runtime/webhooks/signalr?code={@Microsoft.KeyVault(SecretUri=https://myvault.vault.azure.net/secrets/mysecret/)}
    

Observação

A cada 30 minutos ou sempre que as configurações do ponto de extremidade upstream ou a identidade gerenciada são alteradas, o serviço relê o conteúdo secreto. Você pode disparar imediatamente uma atualização alterando as configurações do ponto de extremidade upstream.

Configurações de regra

É possível definir regras de hub, regras de categoria e regras de evento separadamente. A regra de correspondência dá suporte a três formatos:

  • Use um asterisco (*) para encontrar a correspondência de qualquer evento.
  • Use uma vírgula (,) para unir vários eventos. Por exemplo, connected, disconnected corresponde aos eventos conectados e desconectados.
  • Use o nome do evento completo para corresponder ao evento. Por exemplo, connected corresponde ao evento conectado.

Observação

Se estiver usando o Azure Functions com o gatilho do SignalR, o gatilho do SignalR vai expor um só ponto de extremidade no seguinte formato: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>. Basta definir as configurações de modelo de URL para essa URL e manter o padrão de Configurações de regra. Consulte Integração do Serviço do SignalR para obter detalhes sobre como localizar <Function_App_URL> e <API_KEY>.

Configurações de autenticação

É possível configurar a autenticação para cada configuração de ponto de extremidade upstream separadamente. Ao configurar a autenticação, um token é definido no cabeçalho Authentication da mensagem de upstream. Atualmente, o Serviço do Azure SignalR dá suporte aos seguintes tipos de autenticação:

  • None
  • ManagedIdentity

Ao selecionar ManagedIdentity, é necessário primeiro habilitar uma identidade gerenciada no Serviço do Azure SignalR e, opcionalmente, especificar um recurso. Consulte Identidades gerenciadas para o Serviço do Azure SignalR para obter detalhes.

Definir configurações de ponto de extremidade upstream por meio do portal do Azure

Observação

Atualmente, não há suporte para a integração com o Ambiente do Serviço de Aplicativo.

  1. Acesse o Serviço do Azure SignalR.
  2. Selecione Configurações.
  3. Alterne Modo de Serviço para Sem servidor.
  4. Adicione URLs em Padrão de URL upstream. Captura de tela de Configurações Upstream do Serviço do Azure SignalR.
  5. Selecione Regras do Hub para abrir Configurações Upstream. Captura de tela dos detalhes da configuração Upstream do Azure SignalR.
  6. Altere Regras de Hub, Regras de Evento e Regras de Categoria inserindo o valor da regra no campo correspondente.
  7. Em Autenticação Upstream, selecione
  8. Usar a Identidade Gerenciada. (Verifique se você habilitou a identidade gerenciada)
  9. Escolha todas as opções em Público-alvo no token emitido. Consulte Identidades gerenciadas para o Serviço do Azure SignalR para obter detalhes.

Definir as configurações de ponto de extremidade upstream por meio do modelo do Resource Manager

Para definir configurações do ponto de extremidade upstream usando um modelo do Azure Resource Manager, defina a propriedade upstream na propriedade properties. O snippet a seguir mostra como definir a propriedade upstream para criar e atualizar as configurações do ponto de extremidade upstream.

{
  "properties": {
    "upstream": {
      "templates": [
        {
          "UrlTemplate": "http://host.com/{hub}/api/{category}/{event}",
          "EventPattern": "*",
          "HubPattern": "*",
          "CategoryPattern": "*",
          "Auth": {
            "Type": "ManagedIdentity",
            "ManagedIdentity": {
              "Resource": "<resource>"
            }
          }
        }
      ]
    }
  }
}

Protocolos sem servidor

O Serviço do Azure SignalR envia mensagens para pontos de extremidade que seguem os protocolos a seguir. É possível usar a associação de gatilho do Serviço do SignalR com o aplicativo de funções, que processa esses protocolos para você.

Method

POSTAR

Cabeçalho da solicitação

Nome Descrição
X-ASRS-Connection-Id ID de conexão para a conexão do cliente.
X-ASRS-Hub Hub ao qual a conexão do cliente pertence.
X-ASRS-Category Categoria à qual a mensagem pertence.
X-ASRS-Event Evento ao qual a mensagem pertence.
X-ASRS-Signature HMAC (código de autenticação de mensagem baseada em hash) usado para validação. Consulte Assinatura para obter detalhes.
X-ASRS-User-Claims Grupo de declarações da conexão do cliente.
X-ASRS-User-Id Identidade de usuário do cliente que envia a mensagem.
X-ASRS-Client-Query A consulta da solicitação quando os clientes se conectam ao serviço.
Autenticação Token opcional quando ManagedIdentity estiver sendo usado.

Corpo da solicitação

Conectado

Tipo de conteúdo: application/json

Desconectado

Tipo de conteúdo: application/json

Nome Tipo Descrição
Erro string Mensagem de erro de uma conexão fechada. Vazio quando as conexões fecham sem erros.

Mensagem de invocação

Tipo de conteúdo: application/json ou application/x-msgpack

Nome Tipo Descrição
InvocationId string Cadeia opcional de caracteres que representa uma mensagem de invocação. Encontre detalhes em Invocações.
Destino string O mesmo que o evento e o mesmo que o destino em uma mensagem de invocação.
Argumentos Matriz de objetos Matriz que contém argumentos a serem aplicados ao método referido em Target.

Signature

O serviço irá calcular o código SHA256 para o valor X-ASRS-Connection-Id usando a chave de acesso primária e a chave de acesso secundária como a chave HMAC. O serviço o definirá no cabeçalho X-ASRS-Signature ao fazer solicitações HTTP para um ponto de extremidade upstream:

Hex_encoded(HMAC_SHA256(accessKey, connection-id))

Próximas etapas