【问题标题】:Send BASIC auth credentials using cxf client使用 cxf 客户端发送基本身份验证凭据
【发布时间】:2016-01-27 10:08:53
【问题描述】:

我正在使用 cxf webservice 客户端发送身份验证凭据,它说:

javax.xml.ws.WebServiceException:无法发送消息。

原因:org.apache.cxf.transport.http.HTTPException: HTTP 响应 '401: Unauthorized' 与通信时 http://localhost:8080/AccountFacadeService/AccountService

我的客户是:

QName SERVICE_NAME = new QName("http://webservice.account.com/", "AccountFacadeService");
URL WSDL_LOCATION = http://localhost:8080/AccountFacadeService/AccountService?wsdl;

AccountFacadeService stub = new AccountFacadeService(WSDL_LOCATION, SERVICE_NAME);
AccountService port = stub.getAccountServicePort(); 

((BindingProvider) port).getRequestContext().put(BindingProvider.USERNAME_PROPERTY, "user");
((BindingProvider) port).getRequestContext().put(BindingProvider.PASSWORD_PROPERTY, "pass");

还有更多我缺少的标题吗?

【问题讨论】:

    标签: java eclipse web-services cxf


    【解决方案1】:

    好的,经过数小时的研究,我终于找到了问题的答案。

    1. 确保 glassfish 服务器控制台安全领域中的 role 配置正确,并且在 glassfish-ejb-jar.xml 中保持相同
    2. 身份验证凭据以我在帖子中传递的方式传递。有时当客户端无法为您创建标头时,您可以尝试密码验证器。

    final String username = "user";
    final String password = "pass";
    Authenticator.setDefault(new Authenticator() {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(
                        username,
                        password.toCharArray());
                }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2023-02-19
      • 1970-01-01
      • 2018-07-04
      • 2014-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多