我已经开始在我的项目spring ActiveDirectoryLdapAuthenticationProvider
中使用另一个与DB
一起使用以验证用户身份的项目。
我所关注的主要问题与可能使用相同凭据在活动目录服务器和数据库端创建的相同用户相关。之后,这些用户将有可能使用他们的电子邮件登录项目。在此步骤中,我堆叠的情况不一致,因为具有DB
和AD
凭据的用户对项目页面具有不同的访问权限。
为了解决这个问题,我们决定删除可能登录AD用户的电子邮件,因为对于数据库提供商,我们无法修改现有功能,用户应该以与之前相同的方式登录。
我已经查看了Spring ActiveDirectoryLdapAuthenticationProvider方面,然后注意到该类是final
,不幸的是我的方法createBindPrincipal
无法覆盖。
我们决定要做的下一步是将现有的类复制粘贴到我们的项目中,然后删除final修饰符,然后我们执行与此帖How to authenticate against Active Directory via LDAP over TLS?中类似的操作。
总的来说,我不想让它保持原样,因为将来我们决定转移到最高版本的春天时将是困难的支持。另外,我们应该通过这种方法复制ActiveDirectoryLdapAuthenticationProviderTest
以保持适当的覆盖范围。
有人可以解释这个课程final
的主要原因是什么?
答案 0 :(得分:1)
对此有一个未解决的问题:https://github.com/spring-projects/spring-security/issues/3191 看来这堂课没什么真正的理由。