繁体   English   中英

使用Windows凭据从Java客户端调用受保护的IIS Web服务

[英]Calling protected IIS web service from java client with windows credentials

我正在构建一个Java应用程序,该应用程序需要从Web服务获取一些数据。 已经为我提供了wsdl文件和所有我需要的信息,但是却获得了未经授权的401代码。 曾经做过Web服务的人告诉我,IIS中的Web服务目录必须关闭匿名身份验证,因此我需要传递Windows凭据。 我已经搜寻了很长时间的解决方案,但是没有找到任何不能直接传递用户名和密码的东西。 我需要做的是使用用户登录Windows的凭据,以便不再需要输入用户名和密码。 有没有人有这个经验? 我找到了一个叫做SPNEGO的东西,但是它也直接使用用户名和密码。

谢谢你的帮助。

您没有编写使用的Web服务框架(我假设您不是手动创建和发送soap请求)。

我假设Web服务是通过http-basic身份验证来保护的。

如果您愿意,我将使用支持该功能的测试工具soapUI对您的Web服务进行快速测试,并检查是否是这种情况(请参阅: http : //www.soapui.org/SOAP-and -WSDL / authenticating-soap-requests.html

如果成功,则需要在http-header区域内传递用户名和密码。 (有关示例值,请参见“客户端”部分: http//en.wikipedia.org/wiki/Basic_access_authentication

是的,很抱歉,忘了提到我正在使用轴。 尽管如此,最终还是设法对服务进行了身份验证,因为事实证明它不使用基本身份验证,而是使用NTLM。 所以现在我做这样的事情:

    BAWebServiceLocator locator = new BAWebServiceLocator(getEngineConfiguration());
    BAWebServiceSoap baWebServiceSoap = locator.getBAWebServiceSoap(url);

    ((Stub)baWebServiceSoap).setUsername(props.getProperty("username"));
    ((Stub)baWebServiceSoap).setPassword(props.getProperty("password"));

因此,我仍然必须输入我的用户名和密码。 我想要做的是使用登录到Windows的凭据。 有任何想法吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM