Segurança de Tópico
Os aplicativos cliente publicam e subscrevem um tópico. Quando a segurança do sistema de mensagens está ativada, os aplicativos cliente requerem autoridade para acessarem um tópico.
Os tópicos estão contidos em um espaço de tópico, que é um tipo de destino. Dentro do espaço de tópico, os tópicos são organizados em uma ou mais hierarquias de tópico, com base nos nomes dos tópicos. As hierarquias do tópico são associadas a uma raiz virtual, que é criada quando o espaço de tópico é criado. Um tópico é criado dentro do espaço de tópico quando um aplicativo cliente é publicado para o tópico.
Quando uma conexão acessa um tópico, uma verificação de acesso é executada para garantir que o usuário associado à conexão tenha permissão para acessar o destino do espaço de tópico que contém o tópico. Uma segunda verificação é executada para garantir que o usuário também tenha acesso ao tópico em si na hierarquia de tópicos de propriedade do destino do espaço de tópicos. Isso permite o controle de granularidade mais fina do acesso aos tópicos, conforme mostrado no diagrama posteriormente nestas seção. O diagrama mostra um espaço de tópico denominado tspace1 que contém duas hierarquias do tópico, denominadas sports e cars.

Cada barramento contém mais de um espaço de tópico. Cada espaço de tópico é independente no barramento. Tópicos nos espaços de tópicos separados não estão relacionados, mesmo quando possuem o mesmo nome. Considere, por exemplo, um barramento que contém dois espaços de tópicos chamados tspace1 e tspace2, e cada espaço de tópico contém um tópico chamado cars. Se um aplicativo cliente subscreve-se em cars em tspace1, ele só pode receber mensagens publicadas para o tópico cars em tspace1.
Autorização Baseada em Função e Herança de Tópico
A segurança de tópico é baseada na autorização baseada em função. Para obter informações adicionais, consulte Autorização Baseada em Função. Para facilitar a administração da autorização de segurança para um grande número de tópicos, a função de acesso definida para um tópico contém a autoridade de acesso para o próprio tópico e, por padrão, para qualquer tópico abaixo dele dentro da hierarquia de tópico. Dessa forma, um tópico herda funções do tópico pai. Uma função de acesso definida na raiz virtual, entretanto, contém, por padrão, autoridade de acesso para cada tópico no espaço de tópico. No exemplo acima, as funções emissor e receptor foram definidas na raiz virtual do espaço de tópico tspace1.
- Os tópicos sports, cricket e cars herdam a função emissor definida na raiz virtual, mas a herança da função emissor para o tópico tennis está desativada. Isso significa que o tópico tennis e seu filho não podem herdar a função emissor da raiz virtual. A função emissor é definida para o próprio tópico tennis. O mecanismo do sistema de mensagem verifica se um aplicativo cliente de conexão tem autoridade na função emissor para o tópico tennis e seu filho.
- Cada tópico na hierarquia herda a função receptor da raiz virtual. O tópico sports também tem sua própria função receptor. O mecanismo do sistema de mensagem desempenha verificações adicionais nas quais funções de acesso adicionais existem. O filho do tópico sports herda a função receptor do tópico pai e da raiz virtual. O tópico lawn também tem sua própria função receptor.
É possível definir funções de acesso para um tópico antes que ele seja criado no tempo de execução. Observe que o tópico pode herdar funções de seu pai, a menos que você desative explicitamente a herança do tópico.
Autorização de Assinatura
Quando um aplicativo cliente cria uma assinatura para um tópico selecionado, o mecanismo do sistema de mensagem verifica se o cliente tem autoridade na função receptor para receber mensagens publicadas para o tópico selecionado. Uma assinatura pode ser para um único tópico ou usando curingas na especificação de tópico, para vários tópicos. Nos dois casos, quando uma mensagem chega para assinatura, o mecanismo do sistema de mensagem verifica se o aplicativo cliente tem autoridade na função receptor para o tópico selecionado. Quando um aplicativo cliente cria uma assinatura para um único tópico, o mecanismo do sistema de mensagem verifica se o cliente tem autoridade na função criador para criar uma assinatura.
Existe uma assinatura não durável para a duração da sessão do assinante. Isso significa que a assinatura pára de existir quando a sessão do assinante termina. Uma assinatura durável continua a existir depois que a sessão do assinante termina. Isso significa que a assinatura continua a coletar mensagens no tópico ou tópicos quando o assinante não está conectado ao barramento. O assinante pode reiniciar a assinatura e coletar as mensagens. Somente o aplicativo cliente que criou a assinatura durável pode reiniciá-la. Isso permite que o mecanismo do sistema de mensagem verifique autoridade de acesso para mensagens coletadas no tópico quando a assinatura está inativa.