Sécurité des sujets
Des applications client publient un sujet et s'y abonnent. Lorsque la sécurité de la messagerie est activée, les applications clients doivent être autorisés à accéder à un sujet.
Les sujets sont conservés dans un espace de sujet qui correspond à un type de destination. Dans l'espace de sujet, les sujets sont organisés en une ou plusieurs hiérarchies de sujets basées sur les noms de sujet. Les hiérarchies de sujets sont reliées à une racine virtuelle créée en même temps que l'espace de sujet. Un sujet est créé dans l'espace de sujet lorsqu'une application client publie dans ce sujet.
Lorsqu'une connexion accède à un sujet, un contrôle d'accès est effectué pour s'assurer que l'utilisateur associé à la connexion dispose bien des droits d'accès à l'espace qui contient le sujet. Un second contrôle est effectué pour s'assurer que l'utilisateur dispose également des droits d'accès au sujet lui-même, dans la hiérarchie des sujets possédée par la destination de l'espace de sujets. Cela permet un contrôle plus précis de l'accès aux sujets (voir le schéma ci-dessous). Le schéma représente un espace de sujets appelé tspace1 qui contient deux hiérarchies de sujets appelées sports et cars.

Chaque bus peut contenir plusieurs espaces de sujet. Chaque espace de sujet est indépendant des autres espaces de sujet du bus. Les sujets qui se trouvent dans des espaces de sujet distincts ne sont pas liés, même s'ils portent le même nom. Prenons par exemple le cas d'un bus qui contient les deux espaces de sujet tspace1 et tspace2, chacun contenant le sujet cars. Si une application client s'abonne à cars dans tspace1, elle ne peut recevoir que les messages publiés dans le sujet cars de tspace1.
Autorisation basée sur des rôles et héritage de sujets
La sécurité des sujets repose sur l'autorisation basée sur les rôles. Pour plus d'informations, voir Autorisation basée sur des rôles. Pour faciliter l'administration des autorisations de sécurité pour un nombre important de sujets, le rôle d'accès défini pour un sujet contient les droits d'accès du sujet lui-même et, par défaut, de tout sujet qui en dépend dans la hiérarchie des sujets. Un sujet hérite donc des rôles du sujet parent. Un rôle d'accès défini sur la racine virtuelle contient donc par défaut les droits d'accès de tous les sujets de l'espace de sujet. Dans l'exemple ci-avant, les rôles d'expéditeur et de destinataire ont été définis sur la racine virtuelle de l'espace de sujet tspace1.
- Les sujets sports, cricket et cars héritent du rôle d'expéditeur défini sur la racine virtuelle, mais l'héritage du rôle d'expéditeur pour le sujet tennis est désactivé. Cela signifie que le sujet tennis et ses enfants ne peuvent pas hériter du rôle d'expéditeur de la racine virtuelle. Le rôle d'expéditeur est défini pour le sujet tennis lui-même. Le moteur de messagerie vérifie qu'une application client qui se connecte dispose bien des droits d'accès dans le rôle d'expéditeur pour le sujet tennis et ses enfants.
- Tous les sujets de la hiérarchie héritent du rôle de destinataire de la racine virtuelle. Le sujet sports possède également son propre rôle de destinataire. Le moteur de messagerie effectue des contrôles supplémentaires lorsqu'il existe des rôles d'accès supplémentaires. Les enfants du sujet sports héritent du rôle de destinataire du sujet parent et de la racine virtuelle. Le sujet lawn possède également son propre rôle de destinataire.
Vous pouvez ajouter des rôles d'accès à un sujet avant sa création lors de l'exécution. Notez que le sujet peut hériter des rôles de son parent, sauf si vous désactivez l'héritage des sujets de manière explicite.
Autorisation des abonnements
Lorsqu'une application client crée un abonnement pour un sujet sélectionné, le moteur de messagerie vérifie que le client est autorisé dans le rôle de destinataire à recevoir les messages publiés dans le sujet sélectionné. Un abonnement peut porter sur un sujet ou, si des caractères génériques sont utilisés dans la spécification des sujets, sur plusieurs sujets. Dans ces deux cas, lorsqu'un message arrive pour l'abonnement, le moteur de messagerie vérifie que l'application client dispose des droits requis dans le rôle de destinataire pour le sujet sélectionné. Lorsqu'une application client crée un abonnement pour un sujet, le moteur de messagerie vérifie que le client est autorisé dans le rôle de créateur à créer un abonnement.
Il existe un abonnement non durable pour la durée de la session de l'abonné. Cela signifie que l'abonnement disparaît à la fin de la session de l'abonné. Un abonnement durable existe toujours une fois que la session de l'abonné s'est terminée. Cela signifie que l'abonnement continue de collecter les messages du ou des sujets lorsque l'abonné n'est pas connecté au bus. L'abonné peut redémarrer l'abonnement et collecter les messages. Seule l'application client qui a créé l'abonnement peut le redémarrer. Le moteur de messagerie peut ainsi vérifier les droits d'accès des messages collectés sur le sujet lorsque l'abonnement est inactif.