使用Java Web服务。 id会话的问题

时间:2015-05-28 20:36:09

标签: java web-services api authentication

我有一些问题,几乎没有关于id会话令牌和Java Web服务的互联网文档。我们有一个服务器(Tomcat在JAX-WS + SOAP上提供Web服务),它提供了一个查询SQL服务器的API。

我必须编写一个简单的Java客户端,它通过此Web服务与服务器通信。问题是,在能够使用其任何服务器WSDL方法之前,客户端必须通过发送用户/传递的Web服务器方法进行身份验证,并且服务器向客户端返回会话ID(alfanumeric字符串)。

其余的方法没有任何类型的参数,我可以传递会话ID,所以我想它必须用作" context"。我找到了有关如何在JAX-WS中维护session-id的信息:

https://weblogs.java.net/blog/ramapulavarthi/archive/2006/06/maintaining_ses.html

Hello port = new HelloService().getHelloPort();
((BindingProvider)port).getRequestContext().put(BindingProvider.
SESSION_MAINTAIN_PROPERTY,true);

在我的情况下,如果我想收到cookie session-id,我必须:

org.tempuri.RUWebService service = new org.tempuri.RUWebService();
org.tempuri.RUWebServiceSoap myport = new org.tempuri.RUWebServiceSoap();
String session-id = myport.Auth(user,pass);

其中session-id是一个UUID变量是一个十六进制变量的字符串:8-4-4-4-8 ..我可以改为真正的十六进制,如:

java.util.UUID uuidFromHyphens = java.util.UUID.fromString("6f34f25e-0b0d-4426-8ece-a8b3f27f4b63");

我尝试了下面的代码,我改变了#34; port"变量为" myport",尝试匹配两个示例:

((BindingProvider)myport).getRequestContext().put(BindingProvider.
SESSION_MAINTAIN_PROPERTY,true);

它编译,但是当我通过它的一些方法咨询Web服务器时,我收到一个" null",就像我没有进行auth程序一样。 我认为我的问题是我不知道我在使用Cookie session-id auth程序时遇到了什么问题。

如果有人可以帮助我,我将不胜感激。

问候。

1 个答案:

答案 0 :(得分:1)

使用GET或POST方法将其作为Request Parameter传递

(或)

将会话ID放在传出的HTTP标头中,例如

GET / HTTP/1.0
Accept: text/plain
Accept: text/html
Session-Id:DFF55566_SOMEID

但是为了使这两个工作正常,您的Web服务器必须在服务器级别(或)您的应用程序级别以某种格式从客户端获得Session Id