我正在一个Spring项目中工作,在这个项目中,具有数据库和基于角色的授予权限的LDAP安全是最终用户必须具备的要求。
我需要什么
一起配置在数据库中。
示例: LDAP用户: nahid@test.com角色:“管理”角色的管理授予权限: permission_x、permission_y等
将在网页中用作"hasAuthority("permission_x")“。
施加授权。
我在这里发现的是:
现在我的问题是:
。
LDAP身份验证和基于jdbc的授权将如何协同工作?有人能帮忙吗?
提前感谢
发布于 2020-05-12 20:39:48
既然我找到了解决办法,我就在这里分享我自己的答案。希望它能帮助其他人:
我的答案是:
)非常有效。
我是如何解决问题的:
步骤1:
诀窍是使用普通UserDetailsService.提供的带有UserDetails的UserDetails
示例:
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDetailsContextMapper(userDetailsContextMapper())
.userDnPatterns("uid={0},ou=people")
.groupSearchBase("ou=groups")
.contextSource()
.url("ldap://localhost:8389/dc=springframework,dc=org")
.and()
.passwordCompare()
.passwordEncoder(new BCryptPasswordEncoder())
.passwordAttribute("userPassword");
}
@Bean
public UserDetailsContextMapper userDetailsContextMapper() {
return new LdapUserDetailsMapper() {
@Override
public UserDetails mapUserFromContext(DirContextOperations ctx, String username, Collection<? extends GrantedAuthority> authorities) {
UserDetails details= userDetailsService.loadUserByUsername(username+"@test.com");
return details;
}
};
}成功的LDAP身份验证之后,它将尝试使用所有授权将有效的注册用户加载到上下文中。
步骤2
hasAuthority不是为我工作的。我用了如下所示:
<div sec:authorize="hasRole('SOME_PRIVILEGE')">
<div class="alert alert-success" role="alert">
This is secret DIV
</div>
</div>为了进行快速检查,您可以使用以下方法:
<span sec:authentication="principal.authorities"></span>我希望有一天它能对某人有所帮助。
编码愉快!
https://stackoverflow.com/questions/61711828
复制相似问题