tipos autentificacion autenticacion rabbitmq spring-integration spring-amqp

rabbitmq - autenticacion - autentificacion



Spring AMQP+RabbitMQ 3.3.5 ACCESS_REFUSED-Se rechazó el inicio de sesión utilizando el mecanismo de autenticación PLAIN (7)

usuario ''invitado'' solo puede conectarse a través de localhost

Eso es cierto desde RabbitMQ 3.3.x. Por lo tanto, debe actualizar a la misma versión la biblioteca del cliente, o simplemente actualizar Spring AMQP a la última versión (si usa el sistema de administración de dependencias).

La versión anterior del cliente usaba 127.0.0.1 como valor predeterminado para la opción de host de ConnectionFactory .

Estoy por debajo de la excepción

org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Se rechazó el inicio de sesión utilizando el mecanismo de autenticación PLAIN. Para más detalles, consulte el archivo de registro del agente.

Configuración: RabbitMQ 3.3.5 en Windows

En el archivo de configuración en %APPDATA%/RabbitMQ/rabbit.config He hecho a continuación el cambio según https://www.rabbitmq.com/access-control.html

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

También intenté crear un usuario / pwd: la prueba / prueba no parece hacer que funcione.

Probé los Pasos de this publicación.

Otros detalles de configuración son los siguientes:

Tomcat recibió el contexto de la aplicación Spring:

<!-- 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>

En mi clase de controlador

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

En el remitente de Mi mensaje:

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()); } } }

Arriba de la excepción Bloque da abajo Excepción

org.springframework.amqp.AmqpAuthenticationException: com.rabbitmq.client.AuthenticationFailureException: ACCESS_REFUSED - Se rechazó el inicio de sesión utilizando el mecanismo de autenticación PLAIN. Para más detalles, consulte el archivo de registro del agente.

Registro de errores

=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 encuentra debajo de la entrada pom.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>

Por favor, hágame saber si tiene alguna idea / sugerencia


El error

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

puede ocurrir si las credenciales que su aplicación está tratando de usar para conectarse a RabbitMQ son incorrectas o faltan.

Esto sucedió cuando las credenciales de RabbitMQ almacenadas en el archivo web.config mi aplicación ASP.NET tenían un valor de "" para la contraseña en lugar del valor real de la cadena de contraseña.


Estoy seguro de que lo que Artem Bilan ha explicado here podría ser una de las razones de este error:

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

pero la solución para mí fue que inicié sesión en la página de administración de rabbitMQ ( http://localhost:15672/#/users ) con el nombre de usuario y la contraseña predeterminados que son invitados / invitados, luego agregué un nuevo usuario y para ese nuevo usuario habilitó el permiso para acceder desde el host virtual y luego usó el nuevo nombre de usuario y contraseña en lugar del invitado predeterminado y eso borró el error.


Nueva solución:

El módulo de nodo no puede manejar : en una contraseña correctamente. Incluso la URL codificada, como funcionaría normalmente, no funciona.

¡No use los caracteres especiales típicos de una URL en la contraseña!

Como uno de los siguientes : . ? + % : . ? + %

Original, respuesta incorrecta:

El mensaje de error se queja claramente sobre el uso de PLAIN , no significa que las claves son incorrectas, significa que debe usar entrega de datos cifrados (TLS) en lugar de texto sin formato.

Cambiar amqp:// en la cadena de conexión a amqps:// (note the s ) resuelve esto.


Para completar la answer @ cpu-100,

en caso de que no desee habilitar / usar la interfaz web, puede crear nuevas credenciales usando la línea de comando como se muestra a continuación y usarla en su código para conectarse a RabbitMQ.

$ rabbitmqctl add_user YOUR_USERNAME YOUR_PASSWORD $ rabbitmqctl set_user_tags YOUR_USERNAME administrator $ rabbitmqctl set_permissions -p / YOUR_USERNAME ".*" ".*" ".*"


Para permitir el acceso de invitados de forma remota, escribe esto

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

hacia aqui

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

a continuación, reinicie el servicio de windows rabbitmq (Fuente https://www.rabbitmq.com/access-control.html )


establecer ConnectionFactory o el nombre de host de Connection para localhost