java - 如何使用 JAVA Web 应用程序更改初始 Active Directory 密码?

标签 java active-directory ldap

目前我已经开发了一个 Java WebApplication 来提供更改 AD 控制的密码的功能。 Web 应用程序使用 LDAP 访问来执行此操作。用户需要进行身份验证,然后通过“LdapContext.modifyAttributes()”方法更改其密码。

现在我发现这对于具有初始密码的用户不起作用。初始密码意味着“pwdLastSet”标志被设置为要求下次登录时更改密码。

这就是现在的运作方式。

prop.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
prop.put(Context.PROVIDER_URL, "ldaps://my.active.directory.com:636");
prop.put(Context.SECURITY_AUTHENTICATION, "simple");
prop.put(Context.SECURITY_PROTOCOL,"ADSecurityProtocol");
prop.put(Context.SECURITY_PRINCIPAL,this.userid);
prop.put(Context.SECURITY_CREDENTIALS,password);
ldapContext = new InitialLdapContext(prop, null); 

<...snip...>

ModificationItem[] mods = new ModificationItem[2];
String oldQuotedPassword = "\"" + oldPassword + "\"";
byte[] oldUnicodePassword = oldQuotedPassword.getBytes("UTF-16LE");
String newQuotedPassword = "\"" + newPassword1 + "\"";
byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");

mods[0] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE,
new BasicAttribute("unicodePwd", oldUnicodePassword));
mods[1] = new ModificationItem(DirContext.ADD_ATTRIBUTE,
new BasicAttribute("unicodePwd", newUnicodePassword));
ldapContext.modifyAttributes(userDN, mods);

我正在寻找一种想法,如何让用户能够更改密码,尤其是在需要时。我发现一些可能需要 Kerberos 的提示 - 但我几乎对 Kerberos 一无所知。

感谢任何帮助。

乌尔里希

最佳答案

我不太明白这个问题。设置 pwdLastSet 后粘贴的代码不起作用?或者您正在寻找一个想法让用户知道他们必须更改密码?

如果代码不起作用,您是否尝试过 DirContext.REPLACE_ATTRIBUTE ?

如果您需要一种方法让用户知道,只需捕获异常并在用户界面上显示错误消息即可。

关于java - 如何使用 JAVA Web 应用程序更改初始 Active Directory 密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23764576/

相关文章:

java - 无法在android中创建数据库

java - 查找天数

authentication - Apache Nifi 的 LDAP 身份验证不起作用

iis - msdeploy 失败 : The account 'xxx' does not appear to be valid

vb.net - 在 VB.NET 中查询 LDAP。我有用户帐户,我想要一个用户所在组的列表

ldap - 根据不同的LDAP用户联合在Keycloak中分配不同的默认用户组

java - 广播接收器泄露

java - 从 Java Web 应用程序连接到 Cisco Any Connect VPN

java - 使用 spring ldap 模板如何管理获取存储在第一个找到的 ldap 条目的属性中的 dn 的 ldap 条目,而无需第二次 ldap 调用

php - 如何让 PHP 5.4.40 支持 LDAP 5.4?