在我的应用程序中,我实现了oauth2
AuthorizationServer和ResourceServer。我的系统中的每个用户都有一组他的角色(权限)。
我想用oauth2和基于用户角色的安全性来保护我的Spring MVC RESTendpoint。
private final static class DBUserDetails extends User implements UserDetails {
private static final long serialVersionUID = 1L;
private DBUserDetails(User user) {
super(user);
}
public Collection<? extends GrantedAuthority> getAuthorities() {
return AuthorityUtils.createAuthorityList("ROLE_USER");
}
public String getUsername() {
return getName();
}
public boolean isAccountNonExpired() {
return true;
}
public boolean isAccountNonLocked() {
return true;
}
public boolean isCredentialsNonExpired() {
return true;
}
public boolean isEnabled() {
return true;
}
}
而且
@Configuration
@EnableResourceServer
protected static class ResourceServerConfiguration extends ResourceServerConfigurerAdapter {
@Override
public void configure(ResourceServerSecurityConfigurer resources) {
resources
.resourceId(RESOURCE_ID);
}
@Override
public void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/profile/*").hasRole("PERMISSION_ADMIN")
.and().csrf()
.disable().sessionManagement().sessionCreationPolicy(STATELESS);
}
}
@RestController
@RequestMapping("/api/v1.0/profile")
public class ProfileController {
@PreAuthorize("hasRole('PERMISSION_ADMIN')")
@RequestMapping("/currentUser")
public User currentUser(@AuthenticationPrincipal User user) {
return user;
}
}
我希望使用具有permission_admin
的用户保护/profile/*
路径。但现在任何具有accessToken的人都可以访问此endpoint。我错在哪里?
我想您可以在您的ResourceServerConfiguration中为我使用OAuth2SecurityExpressionMethods它的工作原理如下:
http
.requestMatchers().antMatchers("/oauth/api")
.and()
.authorizeRequests()
.antMatchers("/oauth/api").access("#oauth2.hasRole('ADMIN')")...
我试图在一个带有spring security和KeyClope的java应用程序中同时使用领域和资源角色。不幸的是,KeyClope只会返回一个或另一个,具体取决于: 您仍然可以通过自定义代码获得这两种方法,但它会弄乱@PreAuthorize或spring boot方法等注释。isUserInRole,这会导致难看的代码。 有没有办法覆盖@PreAuthorize方法或JSON令牌Keyclo
我们尝试使用用户访问控制实现 RestAPI,其中相同的 URI 应为具有不同角色的两个用户返回不同的响应。比如说,对 URI 的响应(/resource/123) 如何根据角色隐藏每个属性。 隐藏用户不应访问的节点 问题:这会破坏响应结构。客户端可能会中断,因为预期的节点会被遗漏。 为该节点返回 null。 问题:这将破坏响应数据类型。因为“布尔”节点将具有空值。 返回该节点的默认值。 问题:这
我试图用RESTAPI实现Spring Security性,并作为前端进行响应,因为这是我的第一个完整堆栈开发项目,我对如何实现正确的身份验证机制一无所知。 我已经搜索了很多,找到了关于Spring Security with Basic Auth的文章,但我无法弄清楚如何将该身份验证转换为其他api,然后通过会话/cookie进行管理。即使我得到的任何github引用都很旧,或者它们还没有完全迁
我在这里有很多问题要解决。一直试图将上述3项技术集成到我们的WebApp中…我们要使用 null web.xml: 我的servlet-context.xml: My manager-context.xml: 编辑2 我认为主要的问题是SpringSecurity需要webapp上下文(ContextLoaderListener)才能工作,但web应用程序是在servlet上下文中运行的。控制器方
我尝试了以下方法:url=“https://{localhost}/auth/admin/realms/{realm_name}/groups/{group_id}/role mappings”payload=[{“id”:“role_id”,“name”:“role_name”,“composite”:“false”,“clientRole”:“true”,“containerId”:“clie
本文向大家介绍springboot集成springsecurity 使用OAUTH2做权限管理的教程,包括了springboot集成springsecurity 使用OAUTH2做权限管理的教程的使用技巧和注意事项,需要的朋友参考一下 Spring Security OAuth2 主要配置,注意application.yml最后的配置resource filter顺序配置,不然会能获取token但