无法使用给定密码登录到AD账户
问题描述:
我们已经为使用临时密码的用户设置了账户。用户通过电子邮件接收密码,然后假设能够用它登录。 我们已经修复了我们以前的密码不符合AD要求的问题,并且正在使用默认值进行测试。这是我们在控制台收到的错误。请让我知道是否还有其他东西可以提供。感谢:无法使用给定密码登录到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
UserCreation
...
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,但堆栈跟踪似乎是说,它不能转换exampletest成一个号码。
在ADUtil.java级的742行,你叫parseInt
具有解析exampletest成整数的问题。所以没有实际的代码,所有进一步的调查都有点牵强。
希望帮助虽然
“请让我知道是否有其他任何可以提供”源代码,多的堆栈跟踪的一点点的将是一个良好的开端。 – 2014-09-10 13:52:41
好的。我说过,因为我们的代码非常广泛。 – 2014-09-10 13:56:28