【发布时间】:2017-07-06 23:57:53
【问题描述】:
用于 Spring Boot 中的 Spring 安全设置。 LDAP 身份验证提供程序默认配置为使用 BindAuthenticator 类。
这个类包含方法
/**
* Allows subclasses to inspect the exception thrown by an attempt to bind with a
* particular DN. The default implementation just reports the failure to the debug
* logger.
*/
protected void handleBindException(String userDn, String username, Throwable cause) {
if (logger.isDebugEnabled()) {
logger.debug("Failed to bind as " + userDn + ": " + cause);
}
}
此方法用于处理身份验证相关的异常,例如无效凭据。
我想覆盖此方法,以便我可以处理此问题并根据 LDAP 返回的错误代码返回正确的错误消息。如密码无效或帐户被锁定。
当前的 LDAP 实现总是返回“错误的凭据”,它不能正确说明我的凭据为何无效。我想报道这些案例
- 帐户被锁定的位置
- 密码已过期,所以我可以重定向以更改密码
- 帐户因密码重试次数无效而被锁定
请帮忙
【问题讨论】:
-
应该...你真的想把它还给你的最终用户吗?从安全角度来看,您不想公开该信息。如果一个帐户被锁定,黑客现在知道它有一个有效的用户名。同样是你告诉他密码错误或者用户名不存在。
-
@Denium 我正在为内部应用程序构建此应用程序,只有员工可以访问 Intranet。所以这是我的产品负责人的期望:)
-
从安全的角度来看,这并不重要。谁说所有用户都愿意,那么心怀不满的员工呢。我可以想象您可能希望在日志中包含这些信息,但您希望对外界尽可能通用
-
是的。但由于许多原因,要么记录或提高对我公司内部用户的可见性。应该有一种方法来扩展它。目前在安全模式的 Spring Boot 配置中,这似乎是不可能的。
-
还有其他可能的用例,例如过期密码。凭证有效的地方。并且帐户已锁定,凭据再次有效。我无法捕捉这些案例。
标签: spring security spring-boot ldap spring-ldap