spring boot ldap 组和受限端点
Posted
技术标签:
【中文标题】spring boot ldap 组和受限端点【英文标题】:spring boot ldap group and restricted endpoints 【发布时间】:2016-12-26 23:22:25 【问题描述】:我想将某些休息端点限制为仅适用于某个组中的 LDAP 用户。
我按照指南 https://spring.io/guides/gs/authenticating-ldap/ 设置了运行良好的 LDAP 身份验证。那么如何限制某些休息端点呢?
我试过了
@PreAuthorize("hasRole('developers')")
@RequestMapping("/foo")
public String foo(HttpServletRequest request)
return "Welcome to FOO " + request.getRemoteUser();
但它仍然允许不在开发者组中的用户访问该端点
【问题讨论】:
【参考方案1】:您可以将WebSecurityConfigurerAdapter
配置修改为:
@Override
protected void configure(HttpSecurity http) throws Exception
http
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.antMatchers("/foo").hasRole("developers")
.and()
.formLogin();
我不太确定语法以及第一个规则是否会覆盖您的第二个规则,但它会类似于那个。
或者,您可以尝试逐个方法配置安全性,例如this sample。
【讨论】:
不,它仍然允许所有用户访问 /foo 如果您更改顺序,它似乎可以工作。http.authorizeRequests().antMatchers("/foo").hasRole("DEVELOPERS").antMatchers("/**").fullyAuthenticated().and().formLogin().and().httpBasic();
【参考方案2】:
@EnableGlobalMethodSecurity(securedEnabled=true)
需要添加到 webSecurityConfig。一旦我这样做了,我就可以使用@Secured("ROLE_DEVELOPERS")
,然后该方法仅限于该角色。
【讨论】:
以上是关于spring boot ldap 组和受限端点的主要内容,如果未能解决你的问题,请参考以下文章
带有 LDAP 注销的 Spring Security 无法删除会话
Spring Boot 2.0.0.M4 OAuth2 令牌端点抛出 org.springframework.web.HttpRequestMethodNotSupportedException
Spring Security - 在Spring Boot中针对LDAP使用Active Directory对用户进行身份验证