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:
|
{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 broadcast
hub, 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:
Adicione 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 Cofre da Chave. Consulte Atribuir uma política de acesso ao Cofre da Chave 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>)}
<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/ec96f02080254f109c51a1f14cdb1931Por 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.
- Vá para Serviço Azure SignalR.
- Selecione Definições.
- Mude 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. (Certifique-se de que ativou a identidade gerida)
- 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 ManagedIdentity o . |
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))