java - 使用 Java Web 服务。 id session 问题

标签 java web-services api authentication

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

我必须编写一个简单的 Java 客户端,通过此 Web 服务与服务器进行通信。问题是,在能够使用任何服务器 WSDL 方法之前,客户端必须通过发送用户/密码的 Web 服务器方法进行身份验证,然后服务器向客户端返回一个 session ID(字母数字字符串)。

其余的方法没有任何可以传递 session ID 的参数,所以我想它必须用作“上下文”。我找到了有关如何在 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");

我尝试了以下代码,将“port”变量更改为“myport”,尝试匹配这两个示例:

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

它可以编译,但是当我通过某些方法查询网络服务器时,我收到一个“null”,就像我没有进行身份验证过程一样。 我认为我的问题是我不知道我在 cookie session-id 身份验证过程中做错了什么。

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

问候。

最佳答案

使用 GET 或 POST 方法将其作为请求参数传递

(或)

将 session ID 放入传出 HTTP header 中,例如

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

但是要使这两者都起作用,您的 Web 服务器必须在服务器级别(或您的应用程序级别)以某种格式期待来自客户端的Session Id

关于java - 使用 Java Web 服务。 id session 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30516619/

相关文章:

java - 如何配置 java jackson 不在空 bean 上抛出 NPE 异常?

java - 如何在面向 JavaEE 开发人员的 Eclipse 4.4 版中禁用 APT Web 服务验证

ruby-on-rails - 如何使用 ActionCable 作为 API

Python API 连接问题/不确定他们在问什么

java - 我应该关闭 org.apache.commons.io.IOUtils 的 InputStream

javascript - 使用 Java rest api 在 javascript 中发布请求不起作用

java - 手动生成R.JAVA文件

sql - 如何获取维基百科类别及其子类别下的所有文章页面?

java - RESTful Web 应用程序 URL/URI

java - 如何保护 Jersey REST?