policy-enforcer-config:
enforcement-mode: ENFORCING
paths[0]:
name: all
path: /*
paths[1]:
name: test post
path: /my/url
methods[0]:
method: GET
scopes[0]: view
methods[1]:
method: POST
scopes[0]: edit
你能给我提供一个资源范围使用或建议的例子吗?
可能有多个问题,但首先,检查您的SecurityConfig。
这就是我们所拥有的:
@Configuration
@EnableWebSecurity
@KeycloakConfiguration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableConfigurationProperties(KeycloakSpringBootProperties.class)
@RequiredArgsConstructor
public class SecurityConfig extends WebSecurityConfigurerAdapter {
bla-bla..
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers(HttpMethod.POST, "/auth/**")
.antMatchers(HttpMethod.OPTIONS,"/**")
// allow anonymous resource requests
.and()
.ignoring()
.antMatchers(
HttpMethod.GET,
"/",
"/*.html",
"/favicon.ico",
"/**/*.html",
"/**/*.css",
"/**/*.js",
"/actuator/**"
)
;
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
// we don't need CSRF because our token is invulnerable
.csrf().disable()
.exceptionHandling()
.defaultAuthenticationEntryPointFor(
getRestAuthenticationEntryPoint(),
new AntPathRequestMatcher("/**")
)
.authenticationEntryPoint(unauthorizedHandler).and()
// don't create session
.sessionManagement()
.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
.and()
.authorizeRequests()
// system state endpoint
.antMatchers("/ping").permitAll()
.antMatchers(HttpMethod.GET, "/whatever/you/need/to/open/to/public/one", "/whatever/you/need/to/open/to/public/two").permitAll()
// User authentication actions
.antMatchers("/auth/**").permitAll()
.antMatchers("/**/*.css").permitAll()
.anyRequest().authenticated()
;
http
.addFilterBefore(authenticationTokenFilter, UsernamePasswordAuthenticationFilter.class)
;
// disable page caching
http
.headers()
.frameOptions().sameOrigin()
.cacheControl();
}
如果您想用role限制REST APIendpoint,请为控制器方法添加@preauthorize(“hasrole('your.role.from.keycloak')”)
我想使用KeyCloak的authorizaion系统创建一个相当简单的基于角色的访问控制系统。Keycloak正在替换的系统允许我们创建一个“用户”,该用户是一个或多个“组”的成员。在这个遗留系统中,用户可以通过组成员资格(其中组被分配权限)或直接向用户授予权限来访问大约250个“功能”中的每一个。 我想将遗留系统映射到keycloak授权。 谢谢, 标记
我正在Openshift环境中部署一个Spring boot Web应用程序。由于我们在同一个引导项目中使用JSP和CSS等Web组件,因此我们将应用程序部署为Openshift环境中的WAR文件。我还添加了tomcat-embed-jasper来解析这些Web组件并执行WAR文件。 但问题是,当我在Openshift环境中部署它时,应用程序消耗了超过1GB的资源。有什么方法可以减少应用程序的内存
我有一个SpringBoot项目(maven/java8)。 我想通过Maven配置文件(dev.properties|prod.properties)过滤src/main/Resources/application.properties中的一些自定义变量 Maven命令: 应用属性: 开发属性: prod.properties: pom.xml:
我正在开发一个JavaEE6应用程序,其部署目标是GlassFish V3.1。为了隔离应用程序的实例(因为我们可能部署了多个用于测试和生产的实例,或者多个QA实例),我希望将应用程序范围的资源用于应用程序中的所有资源: JDBC连接 JMS资源 自定义资源 不幸的是,由于JDBC连接细节不是静态的,所以我需要支持以下顺序: 部署战争 在部署过程中,检测空的JDBC URL/用户/密码,并且不执行
我最近在使用作为Spring Boot applications(v2.2)开发的微服务,在我的公司,我们使用Keycloak作为授权服务器。我们之所以选择它,是因为我们需要复杂的策略、角色和组,我们还需要用户托管授权(UMA)来在用户之间共享资源。 有没有一种方法可以在控制器级别使用某种注释?类似于下面的伪代码:
我有以下场景:一个客户端应用程序试图访问API网关后面的APIendpoint。我想验证(使用id和秘密)应用程序,如果它是应用程序A允许它访问endpoint/信用,如果它是应用程序B允许它访问endpoint/借方。 我假设API网关应该验证一个调用是否应该被拒绝。你能告诉我我的工作流应该是什么样子,我应该使用什么Keycloak功能吗?