Java Web Service 客户端基本身份验证

标签 java web-services jakarta-ee jax-ws

我在 Glassfish 之上创建了一个 JAX-WS Web 服务,它需要基本的 HTTP 身份验证。

现在我想为该 Web 服务创建一个独立的 Java 应用程序客户端,但我不知道如何传递用户名和密码。

它与 Eclipse 的 Web 服务资源管理器一起工作,并检查了我发现的线路:

POST /SnaProvisioning/SnaProvisioningV1_0 HTTP/1.1
Host: localhost:8080
Content-Type: text/xml; charset=utf-8
Content-Length: 311
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: IBM Web Services Explorer
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Authorization: Basic Z2VybWFuOmdlcm1hbg==
Connection: close

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://ngin.ericsson.com/sna/types/v1.0" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Body>
    <q0:listServiceScripts/>
  </soapenv:Body>
</soapenv:Envelope>

如何使用 java 代码在此“授权” header 中传递用户名和密码?它是散列还是类似的东西?算法是什么?

在不涉及安全性的情况下,我有一个独立的 Java 客户端:

SnaProvisioning myPort = new SnaProvisioning_Service().getSnaProvisioningV10Port();
myPort.listServiceScripts();

最佳答案

基本身份验证的 JAX-WS 方式是

Service s = new Service();
Port port = s.getPort();

BindingProvider prov = (BindingProvider)port;
prov.getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "myusername");
prov.getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "mypassword");

port.call();

关于Java Web Service 客户端基本身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7071366/

相关文章:

java - 生成多个范围之间的随机数

c# - 限制同时发出的 Web 服务请求数

java - 符合 JAX WS 2.0/2.1 意味着什么?

eclipse - 无法让eclipse kepler部署动态web项目的依赖项目

java - 如何从 Glassfish 虚拟服务器配置访问 "properties"?

java - 如何检查单选按钮是否在 Selenium WebDriver 中被选中?

java - Java 中的文件与随机访问文件

java - 在 Java GUI 中将数据从 JTable 插入 MySQL 表

java - 如何在 restful webservice java 中读取 json payload

java - SSO 中的 CAS 身份验证多个 Restful Web 服务