在我们的ASP.NET MVC5 Web应用程序中,我们希望从登录用户的Active Directory中获取安全组。我们使用自定义登录屏幕。在之前的代码中(此处未列出),用户将通过samaccountname和密码进行身份验证。用户成功通过身份验证后,将通过以下代码从Active Directory查询其安全组:
internal static IdentityReferenceCollection GetGroupsOfAdUser(string pSamAccountName, string pDomainName)
{
// create an UPN (e.g. samaccountname@domain)
var lUpn = string.Concat(pSamAccountName, "@", pDomainName);
IdentityReferenceCollection lResult = null;
using (WindowsIdentity lWindowsIdentity = new WindowsIdentity(lUpn))
{
lResult = lWindowsIdentity.Groups;
}
return lResult;
}
我们在此代码中遇到异常。这是callstack的摘录:
The user name or password is incorrect.
At System.Security.Principal.WindowsIdentity.KerbS4ULogon [...]
at System.Security.Principal.WindowsIdentity..ctor(String sUserPrincipalName) […]
我们无法重现该问题,因为用户之前已成功验证了一段时间。
IIS中网站的身份验证设置:
注1:代码在我们公司的位置成功运行。异常发生在具有不同域,活动目录等的不同位置。
注2:登录代码与域管理员一起使用。
谁知道问题出在哪里以及我们如何解决这个问题?