问题陈述:
连接到IBM MQ时,凭证是从运行该应用程序的用户那里获得的,而不是在尝试连接的应用程序中设置的MQ配置属性。
错误:未经授权
EX:
var htProperties = new Hashtable();
htProperties[MQC.HOST_NAME_PROPERTY] = "IPADDRESS";
htProperties[MQC.PORT_PROPERTY] = PORT;
htProperties[MQC.CHANNEL_PROPERTY] = "CHANNEL";
htProperties[MQC.USER_ID_PROPERTY] = "user_id";
htProperties[MQC.PASSWORD_PROPERTY] = "password";
我希望队列管理器验证传递到目标系统上Hashtable的凭据,但是它将从我的源计算机获取当前登录名,并检查它们是否是目标系统上的本地帐户。
如何覆盖本地身份验证,而仅使用服务提供的身份验证?关于目标系统上的凭据,我必须设置什么?
我在文档中找到了。。
ALTER QMGR CONNAUTH(USE.PW)
DEFINE AUTHINFO(USE.PW) +
AUTHTYPE(IDPWOS) +
FAILDLAY(10) +
CHCKLOCL(OPTIONAL) +
CHCKCLNT(REQUIRED)
REFRESH SECURITY TYPE(CONNAUTH)
但是,我不知道“ USE.PW”的值是什么,并且当一次执行所有命令时,会出现多个语法错误。另外,我是否可以打开CHCKLOCL(OPTIONAL)?正确的逻辑是什么..
谢谢
为了使队列管理器验证您提供的凭据,必须对其进行配置。您已找到所需的评论。要解释该命令,因为这似乎是您的问题:
您必须创建一个包含所需配置的AUTHINFO对象,或更改一个现有的配置。这些MQSC命令的Either可以。在第一个示例中,字符串USE.PW
只是对象的名称。
DEFINE AUTHINFO(USE.PW) +
AUTHTYPE(IDPWOS) +
FAILDLAY(10) +
CHCKLOCL(OPTIONAL) +
CHCKCLNT(REQUIRED) +
ADOPTCTX(YES)
ALTER AUTHINFO(SYSTEM.DEFAULT.AUTHINFO.IDPWOS) +
AUTHTYPE(IDPWOS) +
CHCKLOCL(OPTIONAL) +
CHCKCLNT(REQUIRED) +
ADOPTCTX(YES)
然后,必须在队列管理器的CONNAUTH
字段中提供所使用的对象的名称,以确保队列管理器正在使用此对象中的配置。名称将为USE.PW
或SYSTEM.DEFAULT.AUTHINFO.IDPWOS
,具体取决于您使用了上面的哪个命令。
ALTER QMGR CONNAUTH(name-of-object)
然后,最后,您必须告诉队列管理器,已经使用以下命令更改了配置:
REFRESH SECURITY TYPE(CONNAUTH)
关于CHCKLOCL
和CHCKCLNT
字段中使用的值。它们具有相同的值选择,但是CHCKLOCL
适用于使用本地绑定连接(IPC)进行的连接,CHCKCLNT
适用于使用客户端连接(网络)进行的连接。如果您有OPTIONAL
,则如果提供了密码,将对其进行检查,但是没有强制要求密码。如果您有REQUIRED
,则如果您不提供要检查的密码,队列管理器将不允许您进入。