LDAPCONN (INACTIVE):如何成功评估 ldapconn inactive 错误的原因?

LDAPCONN (INACTIVE): How can I successfully evaluate the cause of ldapconn inactive error?

LDAP 服务器证书配置正确,但我无法弄清楚为什么 LDAPCONN 处于非活动状态。日志没有显示问题。

DEFINE AUTHINFO(USE.LDAP) AUTHTYPE(IDPWLDAP) CONNAME('127.0.0.1(389)') LDAPUSER('cn=admin,dc=organisation,dc=co,dc=za') LDAPPWD('admin') SHORTUSR('mqm') REPLACE
AMQ8563: IBM MQ authentication information object created.

ALTER QMGR CONNAUTH(USE.LDAP)
AMQ8005: IBM MQ queue manager changed

REFRESH SECURITY TYPE(CONNAUTH)
AMQ8560: IBM MQ security cache refreshed.

DISPLAY QMSTATUS LDAPCONN
AMQ8705: Display Queue Manager Status Details.
   QMNAME(TEST)                            STATUS(RUNNING)
   LDAPCONN(INACTIVE)                   

当执行 DISPLAY QMSTATUS LDAPCONN 时。我希望能够看到 LDAPCONN(ACTIVE)。

队列管理器的错误应该在下面的路径中。

以下路径基于

  UNIX and Linux systems    ==> /var/mqm/qmgrs/qmname/errors
  Windows systems ==>   MQ_INSTALLATION_PATH\QMGRS\qmname\ERRORS\AMQERR01.LOG

请确保您能够使用凭据登录到 LDAP 服务器。您的用户名 LDAPUSER 在我看来不正确。您应该首先尝试使用用户名密码登录到您的 LDAP。如果有效,则使用 MQ runmqsc 配置它。下面是一个示例命令

 DEFINE AUTHINFO('USE.LDAP') +
  AUTHTYPE(IDPWLDAP) +
  ADOPTCTX(YES) +
  CONNAME('127.0.0.1(389)') +
  CHCKCLNT(OPTIONAL) +
 CHCKLOCL(OPTIONAL) +
  CLASSGRP('GROUP') +
 CLASSUSR('USER') +
 BASEDNG('put your base dng') +
 BASEDNU('put your base dnu') +
 FINDGRP('member') +
 LDAPUSER('admin') +
 LDAPPWD('password') +
 SECCOMM(NO) +
 SHORTUSR('sAMAccountName') +
USRFIELD('sAMAccountName') +
 GRPFIELD('sAMAccountName') +
 AUTHORMD(SEARCHGRP) +
  REPLACE 

我和 Thulasizwe 一起工作,我们发现了这个问题。

我们正在使用 IBM MQ docker 容器对我们忙于使用的 LDAP 解决方案进行本地测试。该问题是由传递给 docker 容器的环境变量引起的,基本上禁用了 MQ 服务器的 IBM OAM(对象权限管理器)。结果仍然是针对 LDAP 服务器进行身份验证,但禁用 MQ 服务器的对象权限检查。

关闭 OAM 后,队列管理器将 LDAPCONN 报告为不活动(尽管仍然对 LDAP 服务器进行身份验证)。

删除导致OAM禁用的环境变量后,权限管理器开启,LDAPCONN报告CONNECTED。

IBM MQ 服务器中的 LDAP 配置

DEFINE AUTHINFO(USE.LDAP) AUTHTYPE(IDPWLDAP) + 
CONNAME('127.0.0.1(10389)') + 
LDAPUSER('uid=adminuser,cn=users,ou=organisation,dc=sa') LDAPPWD('password') + 
BASEDNG('cn=groups,ou=organisation,dc=sa') + 
BASEDNU('cn=users,ou=organisation,dc=sa') + 
CLASSUSR('inetOrgPerson') CLASSGRP('groupOfUniqueNames') +
FINDGRP('uniqueMember') GRPFIELD('cn') USRFIELD('uid') + 
SHORTUSR('uid') AUTHORMD(SEARCHGRP) +
DESCR('LDAP authentication module.') +
REPLACE

导致问题的环境变量

在创建 docker 容器(查看您的 Dockerfile)时,设置了一个环境变量:

FROM ibmcom/mq:latest
...

ENV MQSNOAUT="YES"

...

环境变量 MQSNOAUT 告诉队列管理器在创建管理器时禁用 OAM。

要在此处阅读有关 MQ 环境变量的更多信息:(IBM Knowledge center, SSFKSJ_9.0.0)

我们在 https://hub.docker.com/r/ibmcom/mq

使用了 docker 容器

删除设置后,一切正常。

谢谢大家的回复。希望这个答案对以后的其他人有所帮助。

事后思考

但是,要回答有关 IBM 是否在日志中指示 此特定非活动问题 的主要问题,答案是否定的。我想在我们的案例中 INACTIVE 的状态是正确的,因为它表明 OAM 不活跃。但是,在我们的例子中,LDAP 连接并不是完全不活动的,因为 MQ 服务器仍然使用 LDAP 服务器来对用户进行身份验证(因此它确实连接了!)。即使状态显示为 INACTIVE,用户(登录)对 LDAP 服务器的凭据检查也已成功完成。所以我们案例中的 INACTIVE 指标让我有点困惑。

I.r.o 否则,指标将处于 INACTIVE、CONNECTED 或 ERROR 状态。如果一切正常,状态将为 CONNECTED,否则状态为 ERROR,在这种情况下,您可以查看 /var/mqm/qmgr/QMGR/error 下的日志以获取有关该问题的更多信息。