内容简介:版权声明:版权归博主所有,转载请带上本文链接!联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/85096253
版权声明:版权归博主所有,转载请带上本文链接!联系方式:abel533@gmail.com https://blog.csdn.net/isea533/article/details/85096253
RabbitMQ 安装配置和 Spring 集成
https://blog.csdn.net/isea533/article/details/84545484本文参考资料:
- https://www.rabbitmq.com/configure.html
- https://www.rabbitmq.com/access-control.html
- https://github.com/rabbitmq/rabbitmq-auth-backend-http
- https://github.com/rabbitmq/rabbitmq-auth-backend-cache
环境:RabbitMQ 版本为 3.7.9,操作系统为 Ubuntu 18.04 LTS
启用 HTTP 后台认证需要使用 rabbitmq_auth_backend_http 插件,同时该插件还推荐配合 rabbitmq_auth_backend_cache 通过缓存减轻授权认证服务器压力。
启用插件
输入以下命令查看所有插件:
$ sudo rabbitmq-plugins list # 输出部分日志 Configured: E = explicitly enabled; e = implicitly enabled | Status: * = running on rabbit@redissvr |/ [ ] rabbitmq_amqp1_0 3.7.9 [ ] rabbitmq_auth_backend_cache 3.7.9 [ ] rabbitmq_auth_backend_http 3.7.9 [ ] rabbitmq_auth_backend_ldap 3.7.9 [ ] rabbitmq_auth_mechanism_ssl 3.7.9 [ ] rabbitmq_consistent_hash_exchange 3.7.9 [ ] rabbitmq_event_exchange 3.7.9 [ ] rabbitmq_federation 3.7.9 [ ] rabbitmq_federation_management 3.7.9 ...
通过下面命令分别启用这两个插件:
$ sudo rabbitmq-plugins enable rabbitmq_auth_backend_http # 和 $ sudo rabbitmq-plugins enable rabbitmq_auth_backend_cache
通过 sudo rabbitmqctl environment
查看系统默认设置,和这两个插件相关的部分配置如下:
{rabbit,
[{auth_backends,[rabbit_auth_backend_internal]},
{auth_mechanisms,['PLAIN','AMQPLAIN']},
...
{rabbitmq_auth_backend_cache,
[{cache_module,rabbit_auth_cache_ets},
{cache_module_args,[]},
{cache_refusals,false},
{cache_ttl,15000},
{cached_backend,rabbit_auth_backend_internal}]},
{rabbitmq_auth_backend_http,
[{http_method,get},
{resource_path,"http://localhost:8000/auth/resource"},
{topic_path,"http://localhost:8000/auth/topic"},
{user_path,"http://localhost:8000/auth/user"},
{vhost_path,"http://localhost:8000/auth/vhost"}]},
...
下面通过添加配置文件来修改默认配置。
添加配置
不同操作系统中配置文件默认的位置分别如下:
-
Generic UNIX
-
$RABBITMQ_HOME/etc/rabbitmq/ -
Debian
-
/etc/rabbitmq/ -
RPM
-
/etc/rabbitmq/ -
Mac OSX (Homebrew)
-
${install_prefix}/etc/rabbitmq/, the Homebrew prefix is usually /usr/local -
Windows
-
%APPDATA%\RabbitMQ\
本文 Ubuntu 配置文件在 /etc/rabbitmq/
目录。
默认情况下 RabbitMQ 使用的默认配置,在该目录下面并没有配置文件,需要自己手动创建。
RabbitMQ 从 3.7.0 版本开始推荐使用 sysctl 格式的配置,但是仍然支持老版本 Erlang 语法。
不同格式的配置文件名如下:
- rabbitmq.conf - sysctl 格式的配置文件
- advanced.config - Erlang 语法进行高级配置的文件,这个配置会和 rabbitmq.conf 合并使用
- rabbitmq.config - 老版本 Erlang 语法
在参考资料的给出的 4 个地址的文档中都给出了两种语法的配置方法,本文采用 sysctl 格式进行配置。
在配置目录新增 rabbitmq.conf 配置文件,添加如下配置:
auth_backends.1 = cache # 启用 cache 后,不需要直接指定 http 方式 # auth_backends.1 = http auth_backends.2 = internal # 缓存后端指定为 http auth_cache.cached_backend = http # 认证请求类型 auth_http.http_method = post # 认证和授权地址,官方提供了 Spring Boot 示例 # 根据需要配置下面地址 auth_http.user_path = http://localhost:8080/auth/user auth_http.vhost_path = http://localhost:8080/auth/vhost auth_http.resource_path = http://localhost:8080/auth/resource auth_http.topic_path = http://localhost:8080/auth/topic # 缓存时间,单位毫秒 auth_cache.cache_ttl = 60000
认证可选项说明:
- internal for rabbit_auth_backend_internal
- ldap for rabbit_auth_backend_ldap (from the LDAP plugin )
- http for rabbit_auth_backend_http (from the HTTP auth backend plugin )
- amqp for rabbit_auth_backend_amqp (from the AMQP 0-9-1 auth backend plugin )
- dummy for rabbit_auth_backend_dummy
配置好后,重启 RabbitMQ 服务:
# 关闭 $ sudo rabbitmqctl stop_app # 启动 $ sudo rabbitmqctl start_app
命令参考: https://www.rabbitmq.com/rabbitmqctl.8.html
重启后,通过 sudo rabbitmqctl environment
查看配置是否成功。
启动授权认证服务
使用官方提供的示例进行测试:
可以直接从 GitHub 下载,或者从下面网盘下载单独的 Spring Boot 示例部分:
链接: https://pan.baidu.com/s/1RjF-hXdYml0KHgt-wRSweQ
提取码: hsbt
该示例代码中提供了下面几个用户:
private final Map<String, User> users = new HashMap<String, User>() {{
put("guest", new User("guest", "guest", asList("administrator", "management")));
put("springy", new User("springy", "springy", asList("administrator", "management")));
}};
上面在配置后台认证的时候,同时指定了 cache(http) 和 internal 方式,所以我们原有的账号即使在没有 http 认证服务器的情况下仍然可以登录。
guest 本身是系统默认账号,只能从 localhost 登陆。所以如果你不是 localhost 访问,可以尝试 springy 登陆。
通过 springy/springy 可以成功登陆,你并没有创建过该账号,但是可以登录系统。
如果你通过 HTTP 方式登陆后台,由于界面会自动刷新,你可以发现几乎间隔 60 秒就会重新进行认证,这个间隔由 auth_cache.cache_ttl
缓存过期时间控制。
当对队列交换机等功能进行操作时,会调用其它的 API 验证权限。
当使用 HTTP 认证成功时,会通过 HTTP 方式进行授权。如果认证失败,就会继续调用 internal 方式进行认证,internal 方式认证成功时,后续的授权也是通过 internal 方式进行。
通过那种方式认证成功,就会继续使用该方式进行授权。
以上所述就是小编给大家介绍的《RabbitMQ 启用 HTTP 后台认证》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Firefox 已逐渐开始启用 TLS 1.3 支持(附带启用指南)
- 2.启用Admin
- 启用HTTPS过程实例记录
- express启用https小记
- 为你的网站启用 Https
- 启用 MySQL 和 MariaDB 查询缓存
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
How to Build a Billion Dollar App
George Berkowski / Little, Brown Book Group / 2015-4-1 / USD 24.95
Apps have changed the way we communicate, shop, play, interact and travel and their phenomenal popularity has presented possibly the biggest business opportunity in history. In How to Build a Billi......一起来看看 《How to Build a Billion Dollar App》 这本书的介绍吧!