You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Keycloak Policy Enforcer,避免拦截Spring Boot公共URL

解决Keycloak Policy Enforcer拦截公共URL的问题

问题原因

你的Policy Enforcer配置中未明确排除公共路径(/public/*),即便Spring Security设置了permitAll(),Keycloak的ServletPolicyEnforcerFilter仍会对所有请求执行权限检查,导致公共资源被拦截。

解决方案

1. 在policy-enforcer.json中添加公共路径排除规则

修改policy-enforcer.json,在paths数组中新增针对公共路径的规则,将其enforcement-mode设为DISABLED,让Policy Enforcer跳过对这些路径的检查:

{
  "realm": "online",
  "auth-server-url": "http://localhost:8182",
  "resource": "client-b",
  "credentials": {
    "secret": "secret"
  },
  "enforcement-mode" : "ENFORCING",
  "paths": [
    {
      "path" : "/public/*",
      "enforcement-mode": "DISABLED"
    },
    {
      "path" : "/archive/*",
      "methods" : [
        {
          "method": "GET",
          "scopes" : ["urn:client-b:access"]
        }
      ]
    },
    {
      "path" : "/send/create",
      "methods" : [
        {
          "method": "POST",
          "scopes" : ["urn:client-b:send:create"]
        }
      ]
    }
  ]
}

2. 限制Policy Enforcer Filter的作用路径(可选)

若不想修改Policy Enforcer配置,可在Spring Security中仅对需要管控的路径应用ServletPolicyEnforcerFilter,而非全局添加:

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    http
            .authorizeHttpRequests((authorize) -> authorize
                     .requestMatchers("/public/*").permitAll()
                    .anyRequest().authenticated()
            )
            .oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt);
    
    // 仅对指定受控路径添加Policy Enforcer Filter
    http.addFilterAfter(createPolicyEnforcerFilter(), BearerTokenAuthenticationFilter.class)
        .requestMatchers("/archive/**", "/send/create");
    
    return http.build();
}

3. 校验路径匹配规则

注意Policy Enforcer中path的匹配语法:

  • /public/* 仅匹配/public/xxx,不匹配/public/xxx/yyy这类多层子路径
  • 若需匹配公共路径下所有子路径,改用/public/**

补充说明

Keycloak Policy Enforcer的权限检查优先级高于Spring Security的permitAll()配置,必须通过上述方式明确排除公共路径或限制Filter作用范围,才能让公共资源正常访问。

内容的提问来源于stack exchange,提问作者Name1 Name2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 22:44:55