如果我使用 LDAP 身份验证,为啥必须在我的用户域中存储密码列?

Posted

技术标签:

【中文标题】如果我使用 LDAP 身份验证,为啥必须在我的用户域中存储密码列?【英文标题】:Why must I store a password column in my User domain if I'm using LDAP authentication?如果我使用 LDAP 身份验证,为什么必须在我的用户域中存储密码列? 【发布时间】:2015-02-06 12:56:17 【问题描述】:

我有一个使用 Spring Security Core 和 Spring Security LDAP 插件的 Grails 应用程序。我使用 LDAP 服务器的身份验证绑定方法作为我唯一的身份验证提供程序。为什么我还必须在我的数据库中存储密码列?我的应用程序完全不需要存储密码值,但是如果我从生成的用户域类中删除密码字段,它将不起作用。我真的必须在我的用户表中存储一个值为 null 的密码列吗?当然,必须有不同的方法来解决这个问题。

【问题讨论】:

有一个空值的列看起来很乱?我确定安全插件的代码还不稳定,我在RC4,谁知道需要多长时间才能到达v1.0 Spring Security 不要求您有密码列。我猜这是 Grails 约定优于配置的事情。 @holmis83 也许我的问题应该是,“如何防止 Grails 将域属性持久化到数据库中?” 【参考方案1】:

我认为你不必!

只需在 UserAccount 类中将密码字段定义为 transient

class UserAccount 
  String password
  static transients = [ 'password' ]

【讨论】:

就这样,我发现了 Grails 的另一个方面,我不知道存在 :)

以上是关于如果我使用 LDAP 身份验证,为啥必须在我的用户域中存储密码列?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 LDAP 重定向脚本对一个用户失败?

如何为 LDAP 和 JDBC 配置 Spring?

为啥我必须在用户登录后使用 firebase 对用户进行身份验证?

使用 scala 或 java 的 LDAP 身份验证

Apex 4.2 LDAP 身份验证 - 锁定用户

使用 Spring Security 的 ldap 身份验证