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:
|
{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:
Escolha uma identidade atribuída pelo sistema ou pelo usuário. Confira Como adicionar uma identidade gerenciada no portal do Azure.
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
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/ec96f02080254f109c51a1f14cdb1931Por 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.
- Acesse o Serviço do Azure SignalR.
- Selecione Configurações.
- Alterne Modo de Serviço para Sem servidor.
- Adicione URLs em Padrão de URL upstream.
- Selecione Regras do Hub para abrir Configurações Upstream.
- Altere Regras de Hub, Regras de Evento e Regras de Categoria inserindo o valor da regra no campo correspondente.
- Em Autenticação Upstream, selecione
- Usar a Identidade Gerenciada. (Verifique se você habilitou a identidade gerenciada)
- 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))