我将 JBoss Web 服务用于支付服务应用程序。在某些时候,我需要对支付服务提供商进行远程 SOAP 调用,并且需要使用用户名令牌进行身份验证。
我知道如何使用 JBossWS 执行此操作的唯一方法是这样的:
Map<String, Object> requestContext = ((BindingProvider)port).getRequestContext();
requestContext.put(BindingProvider.USERNAME_PROPERTY, "foobar");
requestContext.put(BindingProvider.PASSWORD_PROPERTY, "changeme");
但这里的问题是“changeme”密码现在作为字符串对象在内存中,我无法控制何时(如果有的话)它会被垃圾收集。如果攻击者此时转储内存,他可以找到凭据。
是否有另一种使用 JBossWS 进行安全 SOAP 调用的方法,我可以在其中控制密码在内存中的保留时间?