如何在SOAP标头中传递动态密码(Pwd + Current Timestamp),时间戳以及用户名。

2020-09-06 12:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)我有一个要求在SOAP标头中传递...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我有一个要求在SOAP标头中传递动态密码(密码+当前时间戳),时间戳以及用户名和源系统(静态值)。

场景:Web服务的代理

>我使用的是肥皂接收器适配器,因为我必须通过代理/防火墙

Header参数的数据格式应为以下格式?

标题:

用户名:ABCDEF

密码:md5(123456 + TIMESTAMP),例如:123456201806151224350001

TIMESTAMP:201806151224350001

1条回答
DafaDDDa
2020-09-06 12:37 .采纳回答

嗨Ayush,

您可以使用用户定义的功能(设置适配器特定的消息属性)并将其映射到消息映射器中的根节点,该映射器实际上动态地传递Header参数。

在用户定义的功能(设置适配器特定的消息属性)中,您可以适当地传递变量。

例如:

DynamicConfiguration conf2 =(DynamicConfiguration)container.getTransformationParameters()。get(StreamTransformationConstants.DYNAMIC_CONFIGURATION); DynamicConfigurationKey key3 = DynamicConfigurationKey.create(" http://sap.com/xi/ XI/System/SOAP "," XAmzDate");

conf2.put(key3,dateStamp);

下面是生成MD5密码的源代码,您可以将其输出与当前时间戳连接起来。

import java.math.BigInteger;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

公共类MD5 {公共静态字符串getMd5(字符串输入)

{

尝试{

MessageDigest md = MessageDigest.getInstance(" MD5");

byte [] messageDigest = md.digest(input.getBytes());

BigInteger上的

no = new BigInteger(1,messageDigest);

字符串hashtext = no.toString(16); 而(hashtext.length()<32)

{

hashtext =" 0" + hashtext; }返回哈希文本;

}

捕获(NoSuchAlgorithmException e)

{

抛出新的RuntimeException(e);

}

}

公共静态void main(String args [])抛出NoSuchAlgorithmException

{

字符串s =""; System.out.println("由MD5生成的HashCode为:" + getMd5(s));

}

}

最终,在SOAP接收器通信通道中,确保设置了ASMA并正确提供了标头名称。

感谢和问候-Rajesh PS

一周热门 更多>