Source AMQP + RabbitMQ 3.3.5 Accès refusé-connexion refusée au moyen D'un mécanisme D'authentification simple

je suis en dessous de "l'exception 151980920"

org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED-Login a été refusé en utilisant le mécanisme d'authentification simple. Pour plus de détails, consultez le fichier journal des courtiers.

Configuration: RabbitMQ 3.3.5 on windows

sur fichier de configuration dans %APPDATA%RabbitMQrabbit.config J'ai fait ci-dessous le changement selon https://www.rabbitmq.com/access-control.html

[{rabbit, [{loopback_users, []}]}].

j'ai également essayé de créer un utilisateur/pwd - test/test ne semble pas faire fonctionner.

essayé les étapes de ce poste.

les autres détails de Configuration sont les suivants:

Tomcat hébergé Printemps Contexte de l'Application:

<!-- Rabbit MQ configuration Start -->
    <!-- Connection Factory -->
    <rabbit:connection-factory id="rabbitConnFactory" virtual-host="/" username="guest" password="guest" port="5672"/>

    <!-- Spring AMQP Template -->
    <rabbit:template id="rabbitTemplate" connection-factory="rabbitConnFactory" routing-key="ecl.down.queue" queue="ecl.down.queue" />

    <!-- Spring AMQP Admin -->
    <rabbit:admin id="admin" connection-factory="rabbitConnFactory"/>

    <rabbit:queue id="ecl.down.queue" name="ecl.down.queue" />

    <rabbit:direct-exchange name="ecl.down.exchange">
        <rabbit:bindings>
            <rabbit:binding key="ecl.down.key" queue="ecl.down.queue"/>
        </rabbit:bindings>
    </rabbit:direct-exchange>

dans ma classe de contrôleur

@Autowired
RmqMessageSender rmqMessageSender;

//Inside a method
rmqMessageSender.submitToECLDown(orderInSession.getOrderNo());

Dans Mon Message de l'expéditeur:

import org.springframework.amqp.core.AmqpTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component("messageSender")
public class RmqMessageSender  {

    @Autowired
    AmqpTemplate                rabbitTemplate;

    public void submitToRMQ(String orderId){
        try{
            rabbitTemplate.convertAndSend("Hello World");
        } catch (Exception e){
            LOGGER.error(e.getMessage());
        }
    }       
}

bloc d'exception ci-dessus donne L'Exception ci-dessous


org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED-Login a été refusé en utilisant le mécanisme d'authentification simple. Pour plus de détails, consultez le fichier journal des courtiers.


Journal Des Erreurs

  =ERROR REPORT==== 7-Nov-2014::18:04:37 ===
closing AMQP connection <0.489.0> (10.1.XX.2XX:52298 -> 10.1.XX.2XX:5672):
    {handshake_error,starting,0,
                     {amqp_error,access_refused,
                                 "PLAIN login refused: user 'guest' can only connect via localhost",
                                 'connection.start_ok'}}

Pls trouverez ci-dessous le pom.entrée xml

        <dependency>
            <groupId>org.springframework.amqp</groupId>
            <artifactId>spring-rabbit</artifactId>
            <version>1.3.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.integration</groupId>
            <artifactId>spring-integration-amqp</artifactId>
            <version>4.0.4.RELEASE</version>
        </dependency>

s'il vous Plaît laissez-moi savoir si vous avez des idées/suggestions

49
demandé sur Community 2014-11-08 02:42:52

7 réponses

Je suis sûr que ce que Artem Bilan a expliqué ici pourrait être l'une des raisons de cette erreur:

Caused by: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the

mais la solution pour moi était que je me suis connecté à la page admin de rabbitMQ ( http://localhost:15672/#/users ) avec le nom d'utilisateur et le mot de passe par défaut qui est invité/invité puis ajouté un nouvel utilisateur et pour ce nouvel utilisateur j'ai permis la permission d'y accéder à partir de l'hôte virtuel, puis utilisé le nouveau nom d'utilisateur et mot de passe au lieu d'invité par défaut et qui a effacé l'erreur.

enter image description here

69
répondu CPU 100 2017-05-23 12:03:02

l'utilisateur 'guest' ne peut se connecter que via localhost

c'est vrai depuis RabbitMQ 3.3.x. Par conséquent, vous devez mettre à jour vers la même version que la bibliothèque client, ou simplement mettre à jour le printemps AMQP vers la dernière version (si vous utilisez le système de gestion de dépendances).

version précédente du client utilisé 127.0.0.1 comme valeur par défaut pour l'option host de ConnectionFactory .

26
répondu Artem Bilan 2014-11-08 17:46:50

Pour terminer @cpu-100 réponse ,

dans le cas où vous ne voulez pas activer/Utiliser l'interface web, vous pouvez créer une nouvelle identité en utilisant la ligne de commande comme ci-dessous et l'utiliser dans votre code pour vous connecter à RabbitMQ.

$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD
$ rabbitmqctl set_user_tags YOUR_USERNAME administrator
$ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"
25
répondu Rahman 2017-05-23 12:10:30

l'erreur

ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN. For details see the broker logfile.

peut se produire si les justificatifs d'identité que votre application essaie d'utiliser pour se connecter à RabbitMQ sont incorrects ou manquants.

j'ai eu ce cas lorsque les justificatifs D'identité RabbitMQ stockées dans mon ASP.NET le fichier web.config de l'application avait une valeur de "" pour le mot de passe au lieu de la valeur réelle de la chaîne de mots de passe.

3
répondu Jon Schneider 2016-07-29 15:05:28

pour permettre l'accès à distance aux invités, écrivez ceci

[{rabbit, [{loopback_users, []}]}].

ici

c:\Users\[your user name]\AppData\Roaming\RabbitMQ\rabbitmq.config

puis redémarrer le service Windows rabbitmq (Source https://www.rabbitmq.com/access-control.html )

2
répondu Peter Szanto 2016-11-14 09:57:18

nouvelle solution:

le module de noeud ne peut pas gérer : dans un mot de passe correctement. Même une url encodée, comme si elle fonctionnait normalement, elle ne fonctionne pas.

N'utilisez pas les caractères spéciaux d'une URL dans le mot de passe!

comme l'un des suivants: : . ? + %


Original, fausse réponse:

le message d'erreur clairement se plaint à l'aide de PLAIN , elle ne signifie pas l'crendentials sont mauvais, cela signifie que vous devez utiliser des données chiffrées de livraison (TLS) au lieu de clair.

changer amqp:// dans la chaîne de connexion en amqps:// (noter le s ) résout cela.

1
répondu DanFromGermany 2017-04-07 12:34:43

set ConnectionFactory ou Connection hostname to localhost

-2
répondu wen 2017-04-12 06:14:07