我在 Web 应用程序中使用 JNDI 进行身份验证。在 OpenLDAP 方面,我使用 ppolicy 来(例如)在三次登录尝试失败后阻止用户的帐户。
我的问题是我需要特定的错误消息(例如“帐户已锁定”)让用户知 Prop 体问题是什么,但现在我只是在执行时遇到异常:
InitialLdapContext ctx = new InitialLdapContext(env, null);
异常中的消息只是[LDAP: error code 49 - Invalid Credentials]
。
我找到了 a related post这显示了如何做到这一点的例子;然而,这让我更加困惑,因为我无法在任何地方找到诸如 PasswordExpiringResponseControl
之类的类,而且我立即遇到异常,因此我无法执行 respControls = ctx.getResponseControls()
。
最佳答案
这可能比它的值(value)更痛苦,但如果你使用 Spring-LDAP ,它会自动将这些错误代码转换为很好的异常。不管怎样,这个库真的很好,从长远来看,它可能会让你的代码更干净、更易于维护。
如果您不熟悉 Spring,那么学习起来可能有点困难;但是,如果您确实想走那条路,this is a good article on it ,包括如何用JNDI设置等等。
关于java - 使用 JNDI 从 Java 在 LDAP 中使用 ppolicy 时如何获取特定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2365683/