对需要 NTLM 身份验证 IIB 的服务执行 SOAP 请求



我正在开发一个操作,在该操作中,我必须对SQL报告服务执行SOAP请求,我已经让WSDL调用soap req,并且我构建了所需的Outputroot,但是当我使用以下授权参数调用服务时:

SET OutputRoot.Properties.IdentitySourceType        = 'usernameAndPassword';
SET OutputRoot.Properties.IdentitySourceToken       = 'User';
SET OutputRoot.Properties.IdentitySourcePassword    = 'Password';
SET OutputRoot.Properties.IdentitySourceIssuedBy    = 'Domain';

我从跟踪中收到以下消息

2017-07-01 20:45:18.789668 19826 UserTrace BIP3719I:节点"SubflowSUB.SOAP 请求操作"通过传输"HTTP"("gg20154"(发送 SOAP 请求,用于类型为"请求-响应"的操作"操作。有关与此请求相关的成功或失败消息以及任何特定于传输的消息,请参阅后续消息。无需执行任何操作。

2017-07-01 20:45:18.792716 19826 UserTrace BIP3633I:节点"SubflowSUB.SOAP 请求操作"将 HTTP 数据发送到主机"gg20154"(端口 80(的 URL "/ReportServer/ReportExec2005.asmx"。代理使用 URL "/ReportServer/ReportExec2005.asmx"通过 HTTP 将数据发送到主机"gg20154"(端口 80(的远程服务器。有关与此请求相关的成功或失败消息,请参阅后续消息。无需执行任何操作。

2017-07-01 20:45:18.794458 19826 UserTrace BIP3634I:节点"SubflowSUB.SOAP 请求操作"从主机"gg20154"接收状态代码为 401 的 HTTP 数据。代理已通过 HTTP 从主机 'gg20154' 的远程服务器接收数据,HTTP 状态代码为 401。以 2 开头的状态代码表示成功;其他则表示客户端或服务器中的错误。无需执行任何操作。

我使用的是正确的凭据,因为我已经看到了直接调用服务时如何在 soapui 上加载,但是当它被 IIB 调用时,它会抛出 401 有人遇到过这种问题吗? 以及如何解决它?

提前谢谢你们。

对于具有基本身份验证的凭证,应创建具有基本缺省值的安全概要文件,并使用mqsisetdbparms命令将用户和密码分配给此概要文件。在 BAR 生成的 SOAP 请求流中,您必须分配创建的安全配置文件:

mqsisetdbparms $BRKCORP -n NAME_CRED -u <user> -p <password>
mqsicreateconfigurableservice $BRKCORP -c SecurityProfiles -o SEG_NAME_CRED -n "propagation,idToPropagateToTransport,transportPropagationConfig" -v "TRUE,STATIC ID,NAME_CRED"

这应该适用于 SOAP 和 Rest 服务:

DECLARE _AUTH CHAR 'Basic ' || BASIC64ENCODE(CAST('<username>' || ':' || '<password>' AS BLOB CCSID InputRoot.Properties.CodedCharSetId));
SET OutputRoot.HTTPRequestHeader."Authentication" = _AUTH;

最新更新