Pontos finais a montante

O recurso de pontos de extremidade upstream permite que o Serviço SignalR do Azure envie mensagens e eventos de conexão para um conjunto de pontos de extremidade no modo sem servidor. Você pode usar pontos de extremidade upstream para invocar um método de hub de clientes no modo sem servidor para notificar pontos de extremidade quando as conexões do cliente estiverem conectadas ou desconectadas.

Nota

Os 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 a uma na ordem. As mensagens serão enviadas para o 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 oferecer suporte a vários padrões. Existem três parâmetros predefinidos:

Parâmetro predefinido Description
{hub} Um hub é um conceito do Serviço Azure SignalR. Um hub é uma unidade de isolamento. O escopo de usuários e entrega de mensagens é restrito a um hub.
{categoria} Uma categoria pode ser um dos seguintes valores:
  • conexões: Eventos de tempo de vida da conexão. Ele é acionado quando uma conexão de cliente é conectada ou desconectada. Inclui eventos conectados e desconectados.
  • mensagens: disparadas quando os clientes invocam um método de hub. Inclui todos os outros eventos, exceto eventos na categoria conexões.
{evento} Para a categoria de mensagens , um evento é o destino de uma mensagem de invocação que os clientes enviam. Para a categoria de conexões, apenas conectados e desconectados 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 quando você estiver avaliando a URL do ponto de extremidade upstream. Por exemplo:

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

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

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

Quando um cliente no hub "chat" invoca o método broadcasthub, uma mensagem será enviada para este URL:

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

Referência secreta do Cofre da Chave nas configurações do modelo de URL

O URL do ponto de extremidade upstream não está criptografado. Você pode proteger pontos de extremidade upstream confidenciais usando o Cofre da Chave e acessá-los com uma identidade gerenciada.

Para habilitar a identidade gerenciada em sua instância de serviço do SignalR e conceder-lhe acesso ao Cofre da Chave:

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

  2. Conceda permissão de leitura secreta para a identidade gerenciada nas políticas de acesso no Cofre da Chave. Consulte Atribuir uma política de acesso ao Cofre da Chave 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>)}
    

    <secret-identity> é o URI completo do plano de dados de um segredo no Cofre de Chaves, 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 teria a seguinte aparência:

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

    Uma URL de ponto de extremidade upstream para o Azure Function teria a seguinte aparência:

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

Nota

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

Configurações de regra

Você pode definir regras de hub, regras de categoria e regras de evento separadamente. A regra de correspondência suporta três formatos:

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

Nota

Se você estiver usando o gatilho do Azure Functions com o SignalR, o gatilho do SignalR exporá um único ponto de extremidade no seguinte formato: <Function_App_URL>/runtime/webhooks/signalr?code=<API_KEY>. Você pode apenas definir as configurações do modelo de URL para essa url e manter as configurações de Regra padrão. Consulte Integração do serviço SignalR para obter detalhes sobre como localizar <Function_App_URL> e <API_KEY>.

Definições de autenticação

Você pode configurar a autenticação para cada configuração de ponto de extremidade upstream separadamente. Quando você configura a Authentication autenticação, um token é definido no cabeçalho da mensagem upstream. Atualmente, o Serviço Azure SignalR dá suporte aos seguintes tipos de autenticação:

  • None
  • ManagedIdentity

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

Definir definições de ponto de extremidade upstream através do portal do Azure

Nota

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

  1. Vá para Serviço Azure SignalR.
  2. Selecione Definições.
  3. Mude o modo de serviço para Serverless.
  4. Adicione URLs em Padrão de URL Upstream. Captura de ecrã das definições Upstream do Serviço AzureSignalR.
  5. Selecione Regras de Hub para abrir Configurações Upstream. Captura de ecrã dos detalhes da definição do Azure SignalR Upstream.
  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. Use a Identidade Gerenciada. (Certifique-se de que ativou a identidade gerida)
  9. Escolha qualquer opção em Audiência no token emitido. Consulte Identidades gerenciadas para o Serviço Azure SignalR para obter detalhes.

Definir configurações de ponto de extremidade upstream por meio do modelo do Gerenciador de Recursos

Para definir as configurações de ponto de extremidade upstream usando um modelo do Azure Resource Manager, defina a upstream propriedade na properties propriedade. O trecho a seguir mostra como definir a propriedade para criar e atualizar as configurações de upstream 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 Azure SignalR envia mensagens para pontos de extremidade que seguem os seguintes protocolos. Você pode usar a ligação de gatilho do Serviço SignalR com o Function App, que lida com esses protocolos para você.

Método

POST

Cabeçalho do pedido

Nome Descrição
X-ASRS-ID de conexão O ID de conexão para a conexão do cliente.
X-ASRS-Hub O hub ao qual a conexão do cliente pertence.
X-ASRS-Categoria A categoria à qual a mensagem pertence.
X-ASRS-Evento O evento ao qual a mensagem pertence.
X-ASRS-Assinatura Um HMAC (código de autenticação de mensagens baseado em hash) utilizado para validação. Consulte Assinatura para obter detalhes.
X-ASRS-Declarações de Usuário Um grupo de declarações da conexão do cliente.
X-ASRS-Id do Usuário A identidade do usuário do cliente que envia a mensagem.
X-ASRS-Cliente-Consulta A consulta da solicitação quando os clientes se conectam ao serviço.
Autenticação Um token opcional quando você estiver usando ManagedIdentityo .

Corpo do pedido

Ligado

Tipo de conteúdo: application/json

Desligado

Tipo de conteúdo: application/json

Nome Tipo Description
Erro string A mensagem de erro de uma conexão fechada. Vazio quando as conexões fecham sem erro.

Mensagem de invocação

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

Nome Tipo Description
InvocationId string Uma cadeia de caracteres opcional 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 do objeto Uma matriz que contém argumentos a serem aplicados ao método referido em Target.

Assinatura

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

Hex_encoded(HMAC_SHA256(accessKey, connection-id))

Próximos passos