L'authentification JMS à fichier plat est facile à configurer sur Glassfish (voir http://docs.sun.com/app/docs/doc/821-0027/aeofg?a=view).Authentification JMS Glassfish (fichier plat)
Le problème est la partie client. J'écris un client Java autonome pour accéder à mes ressources JMS (ConnectionFactory
et Destination
) via JNDI. Comment faire passer un nom d'utilisateur et un mot de passe à JMS de ce client
je l'ai déjà essayé plusieurs choses telles que:
1) Ajout de ces informations d'identification dans le InitialContext
context.addToEnvironment(InitialContext.SECURITY_PRINCIPAL, "username");
context.addToEnvironment(InitialContext.SECURITY_CREDENTIALS, "password");
2) En utilisant les paramètres de nom d'utilisateur et mot de passe JMS dans l'usine de connexion
connectionFactory.createConnection();
Cependant, aucune de ces méthodes ne fonctionne.
Quand je lance le programme, je reçois juste:
com.sun.messaging.jms.JMSSecurityException: [C4084]: Échec de
l'authentification de l'utilisateur : user=guest, broker=localhost:7676(34576)
at com.sun.messaging.jmq.jmsclient.ProtocolHandler.authenticate
(ProtocolHandler.java:1084)
Il continue d'essayer d'authentifier avec l'utilisateur « invité ».
Pour ce test, j'ai utilisé connection.NORMAL.deny.user=*
comme règle d'autorisation (accesscontrol.properties
).
La partie intéressante est que cette exception est levée, même avant que la connexion est obtenue Factore:
InitialContext context = new InitialContext();
ConnectionFactory connectionFactory =
(ConnectionFactory)context.lookup("jms/middleware/factory");
/* The exception is thrown here, so authentication MUST have happened
before already (i.e. NOT in the createConnection(username, password) method) */
quelqu'un Hope connaît la réponse.
Un grand merci à l'avance
Cordialement,
Dinesh