【问题标题】:How does one require a password to be changed when setting an Active Directory password programmatically?以编程方式设置 Active Directory 密码时,如何要求更改密码?
【发布时间】:2012-12-09 07:44:46
【问题描述】:

我正在使用以下代码重置用户的 Active Directory 密码。

using (var context = new PrincipalContext( ContextType.Domain ))
{
  using (var user = UserPrincipal.FindByIdentity( context, IdentityType.SamAccountName, userName ))
  {
      user.SetPassword( "newpassword" );
  }
}

但我需要能够要求用户在他们第一次登录后更改密码。但是,我找不到可以完成这项工作的方法、设置或属性。很明显这是可以做到的,我就是不知道怎么做!

【问题讨论】:

    标签: c# active-directory passwords


    【解决方案1】:

    您需要立即使新创建的密码过期 - 试试这个:

    using (var context = new PrincipalContext(ContextType.Domain))
    using (var user = UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, userName))
    {
        user.SetPassword("newpassword");
        user.ExpirePasswordNow();
    }
    

    查看MSDN docs on ExpirePasswordNow了解更多详情

    【讨论】:

    • 如果要过期,为什么需要SetPassword
    • @rae1n:如果您有一个生成系统密码的系统,您希望用户能够使用该系统生成的密码登录一次,然后要求他立即更改密码。对我来说很有意义。
    • 正是医生所要求的。在实际代码中进行了尝试,它运行良好。
    猜你喜欢
    • 2020-01-31
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 1970-01-01
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多