【问题标题】:Get user and roles from different servers at Spring Security从 Spring Security 的不同服务器获取用户和角色
【发布时间】:2016-12-15 15:39:56
【问题描述】:

我有一个使用 LDAP 服务器进行身份验证的应用程序。它工作正常。但是,有一个问题:在这个 LDAP 服务器中,我没有用户角色。我将它们放在另一台服务器中,在我的应用程序访问的数据库中。从现在开始,我需要将用户角色添加到应用程序中。

我想知道如何获取这些角色并将它们添加到 configureGlobal 方法的 AuthenticationManagerBuilder 身份验证中。有可能吗?

一些信息:

我的 configureGlobal 方法是:

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
    auth.ldapAuthentication().userSearchFilter("uid={0}").contextSource().url(host);
}

我使用的是休眠 4.3.8 和 Spring Security 4.1.1。

具有角色的表是这样创建的:

create table UserGroup (
    user varchar2(250),
    role varchar2(250)
);

记录是这样的:

[用户1,角色1]

[用户1,角色2]

[用户1,角色3]

[用户1,角色4]

[用户2,角色1]

[用户2,角色2]

如您所见,同一个用户可以拥有多个角色。同一角色可以分配给多个用户。我知道它需要标准化,但我认为目前这并不重要。

【问题讨论】:

    标签: spring hibernate spring-security


    【解决方案1】:

    我过去所做的是实现一个UserDetailsService,它填充应用程序数据库中的用户名和角色以及AbstractUserDetailsAuthenticationProvider,它在additionalAuthenticationChecks 内执行LDAP 绑定检查。

    像魅力一样工作。

    事实上,UserDetails 包含一个标志,告诉我在哪里验证用户,在 additionalAuthenticationChecks 中,我们根据多个验证源之一验证了用户,例如本地数据库或各种多租户LDAP 服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-22
      • 2020-08-09
      • 2014-10-19
      • 2015-04-13
      • 2017-12-30
      • 2016-04-20
      • 1970-01-01
      相关资源
      最近更新 更多