C'è un modo per ottenere l'indirizzo IP di origine da un messaggio JMS?

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

  •  06-07-2019
  •  | 
  •  

Domanda

Ho un sistema in cui diversi processi server gestiscono le richieste passate come messaggi JMS da vari client tramite un broker JMS.

Sto cercando di identificare l'origine dei messaggi. C'è un modo per ottenere l'IP o alcune informazioni identificative sull'origine?

Chiarimento: ho già il client distribuito da utenti sconosciuti, quindi sto cercando di evitare di cambiare le classi di messaggi ...

È stato utile?

Soluzione

Esiste un'intestazione JMS opzionale menzionata nella specifica JMS chiamata JMSXUserID che identifica l'utente che invia un messaggio (che il broker convalida e garantisce che sia corretto per evitare lo spoofing) supportato da alcuni provider JMS.

Ad esempio ecco come abilitarlo in Apache ActiveMQ

Altri suggerimenti

Non ci credo. Almeno non sono riuscito a trovare un modo.

Se devi inviare una risposta alla fonte del messaggio, puoi impostare il mittente su " JMSReplyTo " proprietà e rispondi a quella destinazione.

In alternativa, è possibile modificare leggermente lo schema di messaggistica e incorporare il messaggio di informazioni di origine stesso. Il mittente si identificherebbe nel messaggio e il destinatario potrebbe leggerlo da lì.

Se hai il controllo sulla costruzione dei messaggi inviati, puoi sempre aggiungere l'indirizzo IP al messaggio come proprietà. Quindi è possibile verificare il valore con getStringProperty sul messaggio.

Se controlli il codice dei client che inviano i messaggi, potresti inventare un nome di proprietà, dire "IPOfSender" e includere quella proprietà su ogni messaggio con Message.setStringProperty ().

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

Dipende dal tuo server JMS. Alcuni server dispongono di strumenti di amministrazione / API che consentono di visualizzare i dettagli della connessione.

Usando glassfish, se guardi getJMSMessageID () del messaggio, dovresti vedere una stringa con l'effetto di " ID: 40-192.168.0.242 (f5: 62: c6: 58: 22: 6f) - 52.506-122.885.191.641 " ;. Sembra che l'IP sia una sottostringa dell'ID messaggio.

Nota che questo è ciò che posso vedere sotto il nostro setup, quindi potrebbero esserci altri fattori in gioco (es. primavera), ma so che quella stringa non è stata creata da noi programmaticamente.

Risposta breve: NO

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top