PrincipalContext.validatecredals不为用户设置lastLogon日期

本文关键字:设置 lastLogon 日期 用户 validatecredals PrincipalContext | 更新日期: 2023-09-27 18:14:17

我正在验证Active Directory存储中的用户,如下所示:

// using System.DirectoryServices.AccountManagement;
// located in System.DirectoryServices.AccountManagement.dll
using (var context = new PrincipalContext(ContextType.Domain, server, container, 
    ContextOptions.Negotiate, validateUsername, validatePassword))
{
    var valid = context.ValidateCredentials(validateUsername, validatePassword);
    if (valid)
    {
        Console.WriteLine("SUCCESS!");
        using (var userContext = UserPrincipal.FindByIdentity(context,
               IdentityType.SamAccountName, validateUsername))
        {
            Console.WriteLine("LastLogon = " + userContext.LastLogon);
        }
    }
    else
        Console.WriteLine("FAILED!");
}

验证成功,但是lastLogon的值没有改变。当我们在代码中对用户进行身份验证时,由于其他软件使用该值,必须更改此值。我知道ActiveDirectoryMembershipProvider认证改变了这个属性,所以我想知道是否有一种方法我可以使用PrincipalContext(重用AD连接),但执行此验证来改变lastLogon值。

PrincipalContext.validatecredals不为用户设置lastLogon日期

使用lastLogonTimestamp。当您试图通过PrincipalContext对象连接时,这是在AD中更新的字段。