【发布时间】:2014-06-02 11:42:39
【问题描述】:
这是我在这里的第一篇文章。我试图在互联网上搜索我的问题,但没有找到答案。我希望你的专业知识能帮助我。 特别是在使用 Microsoft LDAP 时,我注意到一些烦人的事情。在 LDAP 中,当用户必须在下次登录时重置密码时,有一个标志“用户必须在下次登录时重置密码”,我们称之为标志 X。当为用户设置 X 时,如果我们尝试更改此用户的通行证,我们不能.我想从用户名而不是另一个管理用户来执行此操作-因此用户必须更改通行证,但是如果您尝试更改它,则不能.. 这是我正在做的事情:
Hashtable env = new Hashtable();
env.put(Context.SECURITY_AUTHENTICATION, <auth_mech>);
env.put(Context.SECURITY_PRINCIPAL, <principal>);
env.put(Context.SECURITY_CREDENTIALS, <pass>);
DirContext ctx = new InitialDirContext(env);
尝试创建新的初始上下文时: 身份验证异常 [LDAP:错误代码 49 - 80090308:LdapErr:DSID-0Cxxxxxx,注释:AcceptSecurityContext 错误,数据 773,vece] 数据 773 表示 - 用户必须在下次登录时更改他们的通行证。所以当: - 用户必须在下次登录时更改他们的通行证 - 用户通行证已过期 - 用户帐户被禁用 - 用户帐户已过期 依此类推,我们无法更改用户的密码……这在我看来是一个很大的限制。
另外我想问一下是否有人知道 Micrisoft 遵循的有关此错误代码的规范。我知道错误代码 49 是一般错误代码,并且符合规范,但是数据 773、数据 532 是所有 LDAP 的通用数据,因为我认为它们是特定于供应商的,这又很烦人。
附:我在这里发现了类似的问题: Change AD user expired password in Java 但是在使用可以更改每个人密码的 AD 超级用户时已解决,但我不希望这样,我需要用户能够更改自己的密码,因为这反映在 LDAP 密码历史记录中。
谢谢
【问题讨论】:
-
谁能给点建议?至少告诉我另一个可以提问并得到答案的地方。谢谢。
标签: java active-directory ldap jndi