当 auth_ldap.log = RabbitMQ 中的网络时,auth_ldap.log 没有出现

auth_ldap.log is not appearing when auth_ldap.log = network in RabbitMQ

我为 RabbitMQ 创建了 rabbitmq.conf 和 advanced.config,旨在允许使用内部回退进行 LDAP 身份验证。因为 RabbitMQ 是愚蠢的并且试图使用安装用户的 appdata 这对于 Windows 服务来说是一个糟糕的设计,我还使用环境变量重定向了位置:

配置位置似乎工作正常,因为它们在启动信息中被引用并且不会在启动时导致错误。

rabbitmq.conf(修剪到相关部分)

auth_backends.1 = ldap
auth_backends.2 = internal
auth_ldap.servers.1 = domain.local
auth_ldap.use_ssl = true
auth_ldap.port = 636
auth_ldap.dn_lookup_bind = as_user
auth_ldap.log = network

log.dir = D:\RabbitMQData\log
log.file.level = info
log.file.rotation.date = $D0
log.file.rotation.size = 10485760

advanced.config

[
    {rabbitmq_auth_backend_ldap, [
        {ssl_options, [{cacertfile,"D:\RabbitMQData\SSL\ca.pem"},
            {certfile,"D:\RabbitMQData\SSL\server_certificate.pem"},
            {keyfile,"D:\RabbitMQData\SSL\server_key.pem"},
            {verify, verify_peer},
            {fail_if_no_peer_cert, true}
        ]},
        {user_bind_pattern, ""},
        {user_dn_pattern, ""},
        {dn_lookup_attribute, "sAMAccountName"},
        {dn_lookup_base, "DC=domain,DC=local"},
        {group_lookup_base,"OU=Groups,DC=domain,DC=local"},
        {vhost_access_query, {in_group, "cn=RabbitUsers,OU=Groups,DC=domain,DC=local"}},
        {tag_queries, [
            {administrator, {in_group, "CN=RabbitAdmins,OU=Groups,DC=domain,DC=local"}},
            {management, {in_group, "CN=RabbitAdmins,OU=Groups,DC=domain,DC=local"}}
        ]}
    ]}
].

我正在使用 auth_ldap.log = network,所以我的日志目录中应该有一个 ldap_auth.log 文件可以帮助我排除故障,但它不存在。为什么会出现这种情况?除了 .log 之外,我还没有看到 auth_ldap 日志记录的任何记录设置,所以我假设它会与其他日志一起使用。

我目前 运行 遇到 LDAP 问题,特别是错误 LDAP bind error: "xxxx" anonymous_auth。因为我通过 auth_ldap.dn_lookup_bind = as_user 使用简单绑定,所以我不应该获得匿名身份验证。但是,如果没有详细的日志,我无法获得更多信息。

好吧,看来我在这里犯了两个错误:

  1. 回过头来重新阅读,看来我误解了文档并认为 auth_ldap.log 是一个单独的文件,而不仅仅是一个设置。所有 LDAP 日志记录都进入正常的 RabbitMQ 日志。

  2. 我从 https://groups.google.com/g/rabbitmq-users/c/Dby1OWQKLs8/discussion 中提取了 Luke Bakken 的配置,但以下几行最终为:

    {user_bind_pattern, ""},
    {user_dn_pattern, ""}

而不是

    {user_bind_pattern, "${username}"},
    {user_dn_pattern, "${ad_user}"},

我曾使用带有 herestring 的 Powershell 脚本来创建配置文件,该文件错误地将这些变量解释为空字符串。解决这个问题让我可以使用“domain\username”登录。