用于Notes / Domino中的身份验证的SOAP标头

时间:2016-01-10 08:35:56

标签: soap lotus-domino ws-security lotusscript

我需要使用需要客户端(机器)证书的WS。更准确地说,它使用WS-Security:SOAP消息安全性,WS-Security:由http://docs.oasis-open.org/wss-m/wss/v1.1.1/os/wss-SOAPMessageSecurity-v1.1.1-os.html定义的X.509证书令牌配置文件

使用本机使用者,Domino不会在SOAP标头中添加(神奇地)身份验证。现在我应该如何在标题中添加安全性?理想情况下在LotusScript中...
我不认为无论如何将消费者嵌入我自己的标题中或丰富现有的消费者。我加入了IBM的回复。
所以我的问题:

  • 在Lotusscript中有解决方法吗?
  • 你们中的一些人在java中做了类似的事情(我可能会创建一个LS2J,因为当我得到(希望)来自WS的响应时,很多LotusScript代码已经存在

IBM回复:

我们知道您正在尝试使用SOAP标头进行身份验证。不幸的是,这目前不受支持。 供您参考,我们至少有两个与此主题相关的增强请求(我可以在此区域找到):
SPR#SODY9H6BTM:创建自己的肥皂对象不支持Web代理中的客户端证书身份验证。
SPR#JSHN7A3MLP:WS Consumer SOAP信封的Header元素中的身份验证数据 不幸的是,目前我们无法在支持中做任何进一步的工作。

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,您不知道如何处理SOAP标头,如果是这样,您可能想知道两件事:

1)使用本机Domino使用者方法传递会话。见下面的例子

TestServiceLocator service = new TestServiceLocator();
TestPort port = service.getTestPort();
// that would tell to save cookie session between calls
((javax.xml.rpc.Stub)port)._setProperty(javax.xml.rpc.Stub.SESSION_MAINTAIN_PROPERTY, Boolean.TRUE);

2)如果它不适合您,您可以尝试使用本机SOAP方法。我最近在博客上写过:SOAP and passing session

// Create SOAP Connection  
SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance();  
SOAPConnection soapConnection = soapConnectionFactory.createConnection();  
// connect to webserivce
SOAPMessage soapResponse = soapConnection.call(connect(username, password), url);

// read cookie from response and use it when send another requests
MimeHeaders session = soapResponse.getMimeHeaders(); 
String sesisonCookie = session.getHeader("Set-Cookie")[0];

SOAPMessage soapResponse2 = soapConnection.call(customerGetAll(sesisonCookie), url);
soapConnection.close();

并且想象你在 customGetAll 方法

SOAPBody soapBody = envelope.getBody();
SOAPElement soapBodyElem = soapBody.addChildElement("Customer_GetAll", "m");
soapMessage.getMimeHeaders().addHeader("Cookie", sesisonCookie);
soapMessage.saveChanges();

希望它会有所帮助。