我有两个域用户帐户。一个具有小写用户名,另一个具有混合大小写的用户名,例如“JohnSmith”。ValidateCredentials 适用于小写用户名。但是,对于混合大小写的用户名,它总是返回 false。
PrincipalContext myDomain = new PrincipalContext(ContextType.Domain, "MyDomain");
bool loginSucceded = myDomain.ValidateCredentials(userName, password);
我可以使用以下代码查看两个帐户的属性(都已启用)。LastBadPasswordAttempt 属性表明 ValidateCredentials 返回 false 不是因为密码错误。
PrincipalContext myDomain = new PrincipalContext(ContextType.Domain, "MyDomain");
UserPrincipal user = UserPrincipal.FindByIdentity(myDomain, IdentityType.SamAccountName, userName);
if (user != null)
{
Console.WriteLine("Name: " + user.Name);
Console.WriteLine("DisplayName: " + user.DisplayName);
Console.WriteLine("BadLogonCount: " + user.BadLogonCount);
Console.WriteLine("Enabled: " + user.Enabled);
Console.WriteLine("LastLogon: " + user.LastLogon);
Console.WriteLine("LastBadPasswordAttempt: " + user.LastBadPasswordAttempt);
}
将混合大小写的用户名转换为小写也无济于事。
UPD:响应 kyndigs 的评论,这是调查使用 ValidateCredentials 的应用程序中问题的一部分。一些用户报告说他们无法登录,并且这些用户的用户名大小写混合。