我有两个域用户帐户。一个具有小写用户名,另一个具有混合大小写的用户名,如“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的应用程序中的问题的一部分。一些用户报告说他们无法登录,并且这些用户拥有大小写混合用户名。