如何在使用Java客户端的.NET WCF服务中启用Kerberos身份验证

时间:2019-03-11 17:14:20

标签: java web-services wcf authentication kerberos

通过使用服务代理请求设置非个人和客户端凭据,我能够使用Kerberos身份验证来使用WCF服务。

这可以用Java完成吗?

有没有可用的Java库?

1 个答案:

答案 0 :(得分:0)

启用在服务器端而非客户端上配置Kerberos身份验证。

WSHttpBinding binding = new WSHttpBinding();
        binding.Security.Mode = SecurityMode.Message;
        binding.Security.Message.ClientCredentialType = MessageCredentialType.Windows;

我们在客户端上设置Kerberos凭据,通常由客户端代理类完成。

ServiceReference1.ServiceClient client = new ServiceReference1.ServiceClient();
        client.ClientCredentials.Windows.ClientCredential.Domain = "mydomain";
        client.ClientCredentials.Windows.ClientCredential.UserName = "administrator";
        client.ClientCredentials.Windows.ClientCredential.Password = "123456";

关于如何用Java创建代理。这里有一些解决方案。 Eclipse项目模板中有一个Web Service Client项目模板,该模板可以使用WCF公开的WSDL生成客户端代理类,例如在C#中添加服务引用。
http://wiki.eclipse.org/Creating_a_Java_Web_Service_Client
https://docs.microsoft.com/en-us/dotnet/framework/wcf/accessing-services-using-a-wcf-client?view=netframework-4.7.2
Java JDK中还存在Wsimport.exe工具,如.Net中的SVCUTIL.EXE工具,它可以通过命令外壳程序生成代理。
https://docs.oracle.com/javase/7/docs/technotes/tools/share/wsimport.html
https://docs.microsoft.com/en-us/previous-versions/dotnet/netframework-3.5/aa347733(v=vs.90)
还有第三方库,例如Axis2。
http://axis.apache.org/axis2/java/core/download.cgi
最后,您甚至可以通过HttpClient类构造并发送get / post请求以调用服务。
如果有什么可以帮助的,请随时与我联系。