[英]Moving my website to different server changes authentication from Kerberos to NTLM
我有为Windows身份验证配置的Web服务。 调用WS的客户端代码将凭据传递给WS,如下所示:
myWebService.Credentials = System.Net.CredentialCache.DefaultCredentials;
(我的理解是,这代表已登录用户的用户名-密码域)。
我正在测试配置问题,并对如何确保设置Kerberos感到困惑。
详细说明:
我在同一IIS服务器上有2个虚拟目录(一个是带有.aspx页的“客户端”),另一个是“服务器”(它承载客户端调用的Web服务)。
我的客户端通过以下代码显示有关连接用户的关键信息:
private string GetUserInfo()
{
System.Security.Principal.WindowsIdentity UserIdentityInfo;
StringBuilder msg = new StringBuilder("User Name: ");
UserIdentityInfo = System.Security.Principal.WindowsIdentity.GetCurrent();
msg.Append(UserIdentityInfo.Name);
msg.Append(Environment.NewLine);
msg.Append(" Token: ");
msg.Append(UserIdentityInfo.Token.ToString());
msg.Append(Environment.NewLine);
msg.Append(" Authenticated: ");
msg.Append(UserIdentityInfo.AuthenticationType);
msg.Append(Environment.NewLine);
msg.Append(" System: ");
msg.Append(UserIdentityInfo.IsSystem);
msg.Append(Environment.NewLine);
msg.Append(" Guest: ");
msg.Append(UserIdentityInfo.IsGuest);
msg.Append(Environment.NewLine);
msg.Append(" Anonymous: ");
msg.Append(UserIdentityInfo.IsAnonymous);
msg.Append(Environment.NewLine);
return msg.ToString();
}
当两个webclient和被调用的webservice都在同一服务器(例如SERVER1)上时,身份验证类型为Kerberos 。 实际执行也正确。
当调用相同的Web客户端代码时,身份验证类型更改为NTLM ,但现在位于SERVER2上 。 被调用的Web服务仍驻留在原始服务器(SERVER1)上。 实际执行失败,因为凭据不正确。
SERVER1和SERVER2在同一局域网(相同的DOMAIN)上,并且我用于测试上述每种情况的域帐户是相同的(我在每台计算机的Administrators组中)。
我该如何配置它,使KERBEROS成为身份验证类型-也就是说,当SERVER2上的此客户端由浏览器由“ me”调用时?
请在上方查看我的评论。 ServerFault站点可能是解决此问题的好地方,并且肯定在那里的帖子很快得到了漂亮的回答。 回答:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.