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

Keycloak-SpringBoot Adapter启用策略强制器后如何配置暴露Actuator端点

问题:启用Keycloak策略强制器后,Spring Boot Actuator路径返回403,如何通过Keycloak平台配置暴露?

环境信息

  • Spring Boot 2.6.2
  • Spring Boot Actuator
  • Keycloak 16.1.0

POM依赖配置

<dependencies>
  <dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-spring-boot-starter</artifactId>
    <version>16.1.0</version>
  </dependency>
  <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
  </dependency>
</dependencies>
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.keycloak.bom</groupId>
      <artifactId>keycloak-adapter-bom</artifactId>
      <version>16.1.0</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>

application.properties配置

keycloak.realm=mt-developer
keycloak.resource=test
keycloak.auth-server-url=http://local.host:8080/auth/
keycloak.credentials.secret=ZMRQ0OPiXZFONCpdNO0G7zLnq5IDIcvM
keycloak.ssl-required=external
keycloak.use-resource-role-mappings=false
keycloak.bearer-only=false
keycloak.autodetect-bearer-only=true
keycloak.security-constraints[0].authRoles[0]=user
keycloak.security-constraints[0].securityCollections[0].name=all
keycloak.security-constraints[0].securityCollections[0].patterns[0]=/*
keycloak.security-constraints[1].securityCollections[0].patterns[0]=/actuator
keycloak.security-constraints[1].securityCollections[0].patterns[1]=/actuator/*
keycloak.enabled=true
keycloak.cors=true
management.endpoints.web.exposure.include=*
logging.level.root=DEBUG
# 新增配置导致问题
keycloak.policy-enforcer-config.lazy-load-paths=true

问题描述

原本配置可正常暴露/actuator及所有/actuator/*路径,添加keycloak.policy-enforcer-config.lazy-load-paths=true启用策略强制器后,本地security-constraints配置失效,请求/actuator路径返回403状态码。请问能否通过Keycloak平台的设置来暴露该路径?


解决方案

可以通过Keycloak控制台配置授权策略实现,启用策略强制器后,本地的security-constraints会被Keycloak端的授权规则覆盖,具体步骤如下:

  1. 登录Keycloak控制台,进入目标Realm(mt-developer)
  2. 定位目标客户端:在「Clients」列表中选择test客户端,切换到「Authorization」标签页
  3. 配置Actuator资源:
    • 点击「Resources」选项卡,点击「Create」按钮
    • 填写资源名称(如Actuator Endpoints),在「URIs」中添加/actuator/**(通配符匹配所有Actuator子路径),保持其他默认配置后保存
  4. 创建访问权限规则:
    • 点击「Permissions」选项卡,选择「Create Permission」→「Resource-Based Permission」
    • 选择刚创建的Actuator Endpoints资源,填写权限名称(如Allow Actuator Access)
    • 切换到「Policies」标签页,点击「Add Policy」→「Role Policy」
    • 填写策略名称(如User Role Access Policy),在「Roles」中选择user角色,保存策略
    • 回到权限配置页面,关联刚才创建的User Role Access Policy,完成权限保存
  5. 验证配置:重启Spring Boot应用,使用拥有user角色的用户访问/actuator路径,此时应能正常访问

注意:启用策略强制器后,本地security-constraints配置不再生效,所有授权逻辑由Keycloak端管控,需确保Keycloak中的权限配置覆盖所有需要开放的路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 11:31:08