如何在没有管理员用户的情况下通过 JNDI 在 Active Directory 中更改过期密码

Howto change expired password over JNDI in Active Directory without admin user

我想使用 JNDI 更改 Active Directory 中用户的密码。问题是,该用户的密码已过期。当我创建 InitialDirContext 时,它立即给我一个错误(data 773 表示密码已过期):

javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C0903A9, comment: AcceptSecurityContext error, data 773, v1db1

我知道 IBM LDAP 有解决这个问题的特殊绑定,但我找不到 AD 的东西。

是否可以为没有管理员帐户的用户更改过期密码?我想提供当前密码和新密码并更改它。

好的 - 我已经弄明白了:

AD 中的密码有两种过期方式:

  1. 管理员通过设置标志将其设置为过期
  2. 到期日期已到

在第一种情况下无法通过 LDAP 更改密码,我将收到 data 773。在第二种情况下应该可以改变。