Pontos de extremidade upstream
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 de cliente estiverem conectadas ou desconectadas.
Observação
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 ao pedido:
- 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 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 oferecer 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 ser 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 quando você estiver avaliando a 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 Cofre de Chaves e acessá-los com uma identidade gerenciada.
Para habilitar a identidade gerenciada em sua instância de serviço do SignalR e conceder a ela acesso ao Cofre de Chaves:
Escolha uma identidade atribuída pelo sistema ou pelo usuário. Consulte Como adicionar 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 seu 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 de ponto de extremidade upstream para a Função do Azure teria a seguinte aparência:
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 de ponto de extremidade upstream ou identidade gerenciada forem alteradas, o serviço relê o conteúdo secreto. Você pode acionar imediatamente uma atualização alterando as configurações de 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 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 você estiver usando o Azure Functions com o gatilho do SignalR, o gatilho do SignalR exporá um único 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
Você pode 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
, 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 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 o modo de serviço para Serverless.
- Adicione URLs em Padrão de URL upstream.
- Selecione Regras de 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
- Use a identidade gerenciada. (Verifique se você habilitou a identidade gerenciada)
- Escolha as opções em Audiência no token emitido. Consulte Identidades gerenciadas para o Serviço do Azure SignalR para obter detalhes.
Definir configurações de ponto de extremidade upstream por meio do modelo do Gerenciador de Recursos
Para definir configurações de ponto de extremidade upstream usando um modelo do Gerenciador de Recursos do Azure, defina a properties
upstream
propriedade na propriedade. O trecho a seguir mostra como definir a upstream
propriedade para criar e atualizar configurações de 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 | Digitar | 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 | Digitar | 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 . |
Assinatura
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 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))