一尘不染

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

java

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

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

它可以与Eclipse的Web Service资源管理器一起使用,并检查连接线,我发现了这一点:

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代码在此“授权”标头中传递用户名和密码?是散列还是类似的东西?什么是算法?

没有涉及安全性,我有一个工作的独立Java客户端:

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

阅读 262

收藏
2020-09-08

共1个答案

一尘不染

事实证明,有一种简单的标准方法可以实现我想要的目标:

import java.net.Authenticator;
import java.net.PasswordAuthentication;

Authenticator myAuth = new Authenticator() 
{
    @Override
    protected PasswordAuthentication getPasswordAuthentication()
    {
        return new PasswordAuthentication("german", "german".toCharArray());
    }
};

Authenticator.setDefault(myAuth);

没有自定义的“ sun”类或外部依赖项,也没有手动编码任何内容。

我知道BASIC安全性不是很好,但是我们也使用HTTPS。

2020-09-08