Web services 提供程序端的IIB SOAP用户密码身份验证

Web services 提供程序端的IIB SOAP用户密码身份验证,web-services,authentication,soap,messagebroker,ibm-integration-bus,Web Services,Authentication,Soap,Messagebroker,Ibm Integration Bus,下面是SOAPWeb服务消费者的链接。我正在为SOAP web服务提供者应用相同的方法。 我想访问esql中的用户名和密码,以对使用者和提供者进行身份验证。是否有任何方法可以从ESQL中的SecurityProfiles可配置服务访问提供者的用户名和密码,以便使用使用者凭据进行验证。 用户名和密码是计划文本 我做了以下几件事 1.创建策略 2.创建绑定 3.已创建用户ID和安全配置文件 mqsisetdbparms SBBROK-n SecurityID-u sbuser-p sb.123456

下面是SOAPWeb服务消费者的链接。我正在为SOAP web服务提供者应用相同的方法。 我想访问esql中的用户名和密码,以对使用者和提供者进行身份验证。是否有任何方法可以从ESQL中的SecurityProfiles可配置服务访问提供者的用户名和密码,以便使用使用者凭据进行验证。 用户名和密码是计划文本

我做了以下几件事 1.创建策略 2.创建绑定 3.已创建用户ID和安全配置文件

mqsisetdbparms SBBROK-n SecurityID-u sbuser-p sb.123456 mqsicreateconfigurableservice SBBROK-c安全配置文件-o WSSecurityProfile-n “传播,IDTOPropagatetTransport,传输传播配置”-v TRUE,静态ID,SecurityID

  • SOAPInput节点上配置的Bar文件和集(策略、绑定和安全配置文件)
  • 部署我的流程
  • 在此之后,我假设,在这些提供程序策略上,绑定、配置文件。提供者可以验证使用者用户名和密码


    我使用的是iib版本10.0.0.15。

    我不确定我是否完全理解了这个问题

    我所能告诉您的是:调用您的服务的人提供的凭据将存储在此位置:Properties/IdentitySourcePassword和Properties/IdentitySourceToken就在您的输入节点之后

    如果未设置为static,您正在执行的SOAP请求也将使用此位置的凭据。否则,它将使用mqsisetdbparms命令中定义的用户密码

    因此,您可以访问ESQL代码中的输入凭据,如下所示:

    SET callerUser=InputRoot.Properties.IdentitySourceToken;
    SET callerPassword=InputRoot.Properties.IdentitySourcePassword;
    
    SET myUser = 'Username'
    SET myPassword = 'Password123'
    SET callerUser=InputRoot.Properties.IdentitySourceToken;
    SET callerPassword=InputRoot.Properties.IdentitySourcePassword;
    ##The comparison you want to do here
    SET OutputRoot.Properties.IdentitySourcePassword = myPassword 
    SET OutputRoot.Properties.IdentitySourceToken= myUser 
    
    对于通过mqsisetdbparms存储的凭据,我不知道如何访问它,老实说,我看不出有什么意义

    如果您确实需要,一个解决方案是通过动态用户/密码更改静态用户/密码,并在ESQL中的以下位置直接设置:

    SET callerUser=InputRoot.Properties.IdentitySourceToken;
    SET callerPassword=InputRoot.Properties.IdentitySourcePassword;
    
    SET myUser = 'Username'
    SET myPassword = 'Password123'
    SET callerUser=InputRoot.Properties.IdentitySourceToken;
    SET callerPassword=InputRoot.Properties.IdentitySourcePassword;
    ##The comparison you want to do here
    SET OutputRoot.Properties.IdentitySourcePassword = myPassword 
    SET OutputRoot.Properties.IdentitySourceToken= myUser 
    

    当然,硬编码user/pass不是正确的解决方案,它只是一个示例,但是您可以轻松地将其存储在数据库中并从ESQL检索,如果您回复了,我不想在代码中使用户设置myUser='Username'&设置myPassword='Password123'。是否有任何机制从DBparams获取这些用户和密码。不幸的是,我不知道任何解决方案,我认为也没有。请参阅IBM论坛上的相同问题: