java - 无法使用给定密码登录 AD 帐户

标签 java active-directory ldap

我们已为具有临时密码的用户设置了帐户。用户通过电子邮件收到密码,然后应该能够使用它登录。 此后,我们修复了之前的密码不符合 AD 要求的问题,并使用默认值进行测试。这是我们在控制台中收到的错误。如果还有什么可以提供的,请告诉我。谢谢:

控制台

2014-09-10 13:25:32,685 [ajp-0.0.0.0-8009-4] ERROR com.util.ADUtil - Error building user from attributes
    java.lang.NumberFormatException: For input string: "exampletest"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:492)
    at java.lang.Integer.parseInt(Integer.java:527)
    at com.example.publicwebsite.example.account.util.ADUtil.buildAccount(ADUtil.java:742)
    at com.example.publicwebsite.example.account.util.ADUtil.searchForUsers(ADUtil.java:841)
    at com.example.publicwebsite.example.account.util.AccountUtil.searchForUsers(AccountUtil.java:157)
    at org.apache.jsp.public_.example.admin.searchActiveAccountsJson_jsp._jspService(searchActiveAccountsJson_jsp.java:77)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:369)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:322)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:249)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:183)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:442)
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:95)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
    at org.jboss.web.tomcat.service.sso.ClusteredSingleSignOn.invoke(ClusteredSingleSignOn.java:692)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:566)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.internalProcess(ActiveRequestResponseCacheValve.java:74)
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:47)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
    at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:437)
    at org.apache.coyote.ajp.AjpProtocol$AjpConnectionHandler.process(AjpProtocol.java:385)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:451)
    at java.lang.Thread.run(Thread.java:745)

这是我们之前问题的链接:

How to reset password in AD, getting an LDP OperationNotSupported error

Java

用户创建

...

ldapContext = new InitialDirContext(ldapEnv);
        Attributes attributes = new BasicAttributes(true);
        Attribute objClasses = new BasicAttribute("objectClass");
        objClasses.add("top");
        objClasses.add("user");
        objClasses.add("person");
        objClasses.add("organizationalPerson");

        Attribute cn = new BasicAttribute("cn", "" + userId);
        Attribute description = new BasicAttribute("description", "user account");
        Attribute distinguishedName = new BasicAttribute("name", "" + userId);
        Attribute firstName = new BasicAttribute("givenName", fName);
        Attribute lastName = new BasicAttribute("sn", lName);
        Attribute mail = new BasicAttribute("mail", email);
        Attribute organization = new BasicAttribute("department", org);
        Attribute phoneNumber = new BasicAttribute("homePhone", pNumber);
        Attribute samAccountName = new BasicAttribute("sAMAccountName", "" + userId);
        Attribute name = new BasicAttribute("distinguishedName", createDN("" + userId,usersOU)); 
        Attribute objectCategory = new BasicAttribute("objectCategory", usersCategoryDN);

        Attribute accountControl = new BasicAttribute("userAccountControl", "512");
        Attribute password = new BasicAttribute("unicodePwd", formatPassword(temporaryPassword));
            logger.info("userscat" + usersCategoryDN);

        attributes.put(objClasses);

        attributes.put(cn);
        attributes.put(description);
        attributes.put(distinguishedName);
        attributes.put(firstName);
        attributes.put(lastName); 
        attributes.put(mail);
        attributes.put(organization);
        attributes.put(phoneNumber);
        attributes.put(samAccountName);
        attributes.put(name);
        attributes.put(objectCategory);
        attributes.put(accountControl);
        attributes.put(password);

        account.setPassword(temporaryPassword);

...

**formatPassword 是本文中用于编码的函数:

http://www.ramblingtech.com/will_not_perform-error-from-ad-on-password-change-using-java/

最佳答案

我对 Java 不太了解,但是 StackTrace 似乎说它无法将 exampletest 转换为数字。

在 ADUtil.java 类的第 742 行,您调用了 parseInt,它在将 exampletest 解析为整数时出现问题。因此,如果没有实际的代码,所有进一步的调查都有点牵强。

希望有帮助

关于java - 无法使用给定密码登录 AD 帐户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25767120/

相关文章:

authentication - 如何在配置为使用 LDAP 作为用户数据库的 Jenkins 上添加外部用户?

linux - 尝试从 linux ldapsearch 命令获取 memberof 详细信息

java - Codenameone构建服务器报错java.lang.NullPointerException

c# - 如何确保 IsInRole 检查不使用缓存的凭据

java - 如何在 JPQL 或 HQL 中进行限制查询?

powershell - 导出 Active Directory 中用户的所有属性和值

java - 针对 Active Directory 的 LDAP 身份验证可接受的 SECURITY_PRINCIPAL 格式是什么?

java - Java JNDI 连接的 LDAP 错误 49

java - 编辑 csv 文件的最佳方法是什么

Java 为什么关键监听器不工作?