Existe-t-il un moyen d'obtenir l'adresse IP d'origine à partir d'un message JMS?

StackOverflow https://stackoverflow.com/questions/270788

  •  06-07-2019
  •  | 
  •  

Question

J'ai un système dans lequel différents processus de serveur traitent les demandes transmises sous forme de messages JMS de divers clients via un courtier JMS.

J'essaie d'identifier la source des messages. Existe-t-il un moyen d'obtenir l'adresse IP ou des informations d'identification concernant l'origine?

Précision: le client est déjà déployé par des utilisateurs inconnus. Par conséquent, j'essaie d'éviter de modifier les classes de message ...

Était-ce utile?

La solution

Il existe un en-tête JMS facultatif mentionné dans la spécification JMS appelée JMSXUserID , qui identifie l'utilisateur qui envoie un message (que le courtier valide et assure qu'il est correct pour éviter l'usurpation d'identité) pris en charge par certains fournisseurs JMS.

Par exemple, voici comment l'activer dans Apache ActiveMQ

Autres conseils

Je ne le crois pas. Au moins, je n'ai pas réussi à trouver un moyen.

Si vous devez envoyer une réponse à la source du message, vous pouvez faire en sorte que l'expéditeur définisse le paramètre "JMSReplyTo". propriété et répondez à cette destination.

Vous pouvez également modifier légèrement votre schéma de messagerie et intégrer le message d’information source lui-même. L'expéditeur s'identifierait dans le message et le destinataire pourrait le lire à partir de là.

Si vous avez le contrôle sur la construction des messages envoyés, vous pouvez toujours ajouter l'adresse IP au message en tant que propriété. Ensuite, vous pouvez vérifier la valeur avec le getStringProperty , méthode sur Message.

Si vous contrôlez le code des clients qui envoient les messages, vous pouvez inventer un nom de propriété, par exemple "IPOfSender", et inclure cette propriété dans chaque message avec Message.setStringProperty ().

// client code
String myIPString = ...;
Message m = session.createTextMessage();
m.setStringProperty("IPOfSender", myIPString);
...

Cela dépend de votre serveur JMS. Certains serveurs ont des outils d’administration / API qui vous permettent d’afficher les détails de la connexion.

À l'aide de glassfish, si vous consultez la méthode getJMSMessageID () du message, vous devriez voir une chaîne contenant l'effet suivant: "ID: 40-192.168.0.242 (f5: 62: c6: 58: 22: 6f) - 52506-122885191641 ". Il semble que l'adresse IP soit une sous-chaîne de l'identifiant du message.

Veuillez noter que c’est ce que je peux voir dans notre configuration. Il peut donc y avoir d’autres facteurs en jeu (le printemps, par exemple), mais je sais que cette chaîne n’a pas été créée par nous de manière programmée.

Réponse courte: NON

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top