我正在编写需要从IIS托管的Web服务中获取数据的Java 1.5+客户端。我在Eclipse中创建了一个新的Web服务客户端,并在生成客户端代理时使用Java代理客户端类型和Apache Axis2 Web服务运行时。 Web服务本身在Windows 2003上运行,并且安全性设置为仅使用Windows集成身份验证。我在网上发现了很多文章,展示了如何从Java客户端成功连接到这个IIS服务,但是我看到的所有东西似乎都要求我将用户名和密码放在我的Java客户端代码中。Java客户端调用Windows集成身份验证Web服务
我的Java客户端将运行在IIS服务所在的同一Active Directory网络上的Windows计算机上(即,我每天登录的帐户都可以访问该服务)。我想让我的Java客户端在登录用户的上下文中运行,而不需要在代码中输入我的登录凭据。这里是我当前的代码,它的工作原理,但我需要在代码中把一个用户名和密码:
final NTCredentials nt = new NTCredentials("my_username", "my_password", "", "my_domain");
final CredentialsProvider myCredentialsProvider = new CredentialsProvider() {
public Credentials getCredentials(final AuthScheme scheme, final String host, int port, boolean proxy) throws CredentialsNotAvailableException {
return nt;
}
};
DefaultHttpParams.getDefaultParams().setParameter("http.authentication.credential-provider", myCredentialsProvider);
但我真的不希望有把用户名和密码的代码 - 我希望它使用正在运行Java客户端的已登录Windows用户的凭据运行。
我应该使用哪些代码,以便与登录用户的凭证连接,而无需指定用户名和密码?这可能吗?
肖恩 - Axis2的不(我相信)直接包括HTTP客户端代码。自从我使用Axis以来,这已经有一段时间了,但此时它需要Apache httpclient 3。您能确认您是否在使用Axis2和HTTPClient 3? – 2011-05-11 17:35:48
我还没有做任何具体的查看或使用HTTPClient3。我所做的是1)右击该项目,并创建一个新的Web服务客户端: 一个。 \t右键 - 新建 - 其他 - Web服务 - Web服务客户端 湾\t点击下一步 c。 \t指向Web服务的WSDL d。 \t将仪表设置到最低级别(开发客户端) e。 \t单击Web服务运行时的配置链接 - 选择Apache Axis2 f。 \t完成 2)使用生成的代理类来使用服务 – Shawn 2011-05-19 22:02:23