点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
大家好,
我有一个Java映射,在该映射中,我正在使用USER ID/PASSWORD进行SOAP查找到Web服务,以获取会话ID。 当我尝试在目标SOAP映射中构造SOAP信封时,我在Java映射中进一步使用了该会话ID。
我的问题是我已经在字符串变量中对USER ID/PASSWORD进行了硬编码,并在构造SOAP查找xml时使用它。
因此,当我从一种环境转移到另一种环境时,客户端的用户ID/PASSWORD将更改。 在那种情况下,我必须手动更改Java映射并进行传输。
处理它的最佳方法是什么? 这样,当我将Java映射从一个环境传输到另一个环境时,我不必更改用户名/密码。
我看到三个选项:
1。 使用值映射并控制ID中的用户ID/密码。
2。 使用参数化Java映射并控制ID中的用户ID/密码。
3。 从"系统属性"中获取SID,即PID或PIQ或PIP,然后设置if(否则)条件以选择相应的用户ID和密码
我想使用选项1和2,在这两种情况下,我都将密码公开给其他开发人员。 是否可以像在密码字段中那样显示为星号字符的方式来隐藏我的密码字段?建议使用以上两个选项中的哪个?
我获得的SESSION ID也可以全天重复使用。 因此,在随后的通话中,我不需要进行进一步的肥皂查找吗? 有什么办法可以将这个会话ID存储在全局容器变量中,并可以重用它直到耗尽。 就像当我从Web服务获取会话ID时一样,它说14000秒是有效的会话,因此这意味着我们可以重用该会话ID,而不是每次都获取会话ID。 那么解决这个问题的最佳方法是什么? 我认为唯一的选择是将其存储在某些z表中并执行soap rfc查找。
提前
Hemantika
几个月前我遇到了同样的问题,解决方法是此
我建议您使用值映射。
从不处理会话ID,因此不能给您太多建议。
我建议您同时使用1和2。
您可以编写UDF来传递可以从值映射中检索到的用户ID和密码。 这样,当您迁移到质量检查或生产系统时,可以轻松地对其进行维护。
无论如何,当其他开发人员访问ID时,密码就会向其他开发人员公开。 您可以将散列密码(SHA1算法)存储在值映射表中。 然后,您需要编写更多的Java代码来对值进行散列,然后再将其传递给UDF。 您可以做的就是使密码变得晦涩。
为什么不将用户名/密码写到属性文件中,而仅向系统管理员提供访问控制。 在映射中,您可以读取文件并提供值。 基本上,您需要为每个环境维护单独的属性文件,这在开发环境中是非常标准的。
嗨,Hemanthika,
这是我对此的想法
1。 使用值映射并控制ID中的用户ID/密码:-不错的选择,但是您无法隐藏用户ID和密码。 使开发人员将来可以更轻松地更改用户ID/密码。
2。 使用参数化Java映射并控制ID中的用户ID/密码。-开发人员必须知道Java映射以及如何设置参数。 许多并非来自Java背景的开发人员在这样做时可能会遇到问题。
3。 从系统属性中获取SID,即PID或PIQ或PIP,然后设置条件(如果是其他条件)以选择相应的用户ID和密码:-最好保留此选项。 随着时间的推移,业务发生变化,他们可能决定更换服务器或克隆服务器。 克隆服务器时,包括SID在内的内部系统属性将发生更改(概率为90%)。 然后,开发人员将不得不更改与之相关的硬编码。
""我想使用选项1和2,在两种情况下,我都将密码公开给其他开发人员。我可以隐藏密码吗? 像我们在密码字段中一样显示为星号字符的字段?建议使用以上两个选项中的哪个?"
ans)您需要确保将来继续进行项目维护,即使 您决定继续前进。
接管的开发人员应该能够轻松理解用户名和密码的下落。 因此,我建议第四个选择是消息映射。 在消息映射(MM)中提供用户名和密码作为常量字段。 在相同的操作/接口映射中,消息映射应在Java映射代码之前。 用户名和密码将在MM中进行硬编码。 MM用作java映射的输入。 如果要隐藏实际密码,则在常量字段中以相反的方式指定它,并在将其输入Java映射之前使用和UDF使其正确。 也就是说,如果密码为 xyz @ 123 ,则在到达Java映射之前会说 321 @ zyx 。 因此,即使暴露了密码,也不是实际的密码。 开发人员必须研究UDF才能找到实际的密码。
"就像当我从Web服务获取会话ID时,它说会话有效14000秒,因此这意味着我们可以重用此会话ID,而不是每次都获取会话ID。那么什么是 处理此问题的最佳方法"。
ans)您无法在这里冒险,因为您不知道该会话ID何时无效。 若要使用整天有效的相同会话ID,则应保持相同的时间86400秒。 因此,每次访问Web服务时,都必须生成一个新的会话ID。 如果您在同一场景中多次调用Web服务,那么最好的选择是建议"我认为唯一的选择是将其存储在z表中并进行soap rfc查找。" 。 您也可以使用UDF将其存储在PI Server的临时文件中(但更安全的选择是使用Z表)。
最后,"我可以像在密码字段中那样隐藏我的密码字段吗? 星号字符?"
ans)我认为SAP PI中没有此选项。 您可以等待专家对此做出回应。
致谢
Anupam
您好,Sugata,
能否请您分享有关读取参数的代码。 我能够读取普通参数,但是使用pwd时。 参数,代码读取为NULL。
我正在使用String apiKey = mContext.getContextData(" APIKey");
请帮助。
一周热门 更多>