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

如何仅为特定Spring profile启用Keycloak安全配置

仅在指定Spring Profile启用Keycloak的实现方法

方法1:通过@Profile注解绑定生效环境

把所有Keycloak相关的安全配置逻辑放到独立的配置类中,通过@Profile注解指定仅在目标profile下加载该类即可,其余环境不会加载Keycloak的任何安全规则。
示例代码:

import org.keycloak.adapters.springsecurity.KeycloakConfiguration;
import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
import org.springframework.context.annotation.Profile;

// 仅在prod、staging两个profile下加载该配置,按需替换为你自己的profile名称
@Profile({"prod", "staging"})
@KeycloakConfiguration
public class CustomKeycloakSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
    // 此处写你原有Keycloak安全配置逻辑,包括HttpSecurity路径拦截规则、认证管理器配置等
}

对应需要启用Keycloak的profile配置文件(如application-prod.yml)中写入Keycloak服务地址、realm、客户端ID等配置即可,其余profile的配置文件无需填写Keycloak相关参数。

方法2:通过配置开关灵活控制(可配合profile使用)

如果不想和profile强绑定,可新增自定义开关参数,在不同profile的配置文件中修改开关值来控制Keycloak是否启用:

  1. 给Keycloak配置类加上条件注解:
import org.keycloak.adapters.springsecurity.KeycloakConfiguration;
import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;

// 仅当配置项keycloak.enabled为true时加载该配置,默认不启用
@ConditionalOnProperty(prefix = "keycloak", name = "enabled", havingValue = "true", matchIfMissing = false)
@KeycloakConfiguration
public class CustomKeycloakSecurityConfig extends KeycloakWebSecurityConfigurerAdapter {
    // 安全配置逻辑
}
  1. 不同profile的配置文件中设置开关值:
    application-prod.yml(启用Keycloak):
keycloak:
  enabled: true
  auth-server-url: https://你的Keycloak服务地址/auth
  realm: 你的realm名称
  resource: 你的客户端ID
  # 其余Keycloak所需配置

application-dev.yml(禁用Keycloak):

keycloak:
  enabled: false

如果你使用官方的Keycloak Spring Boot Starter,官方默认已经适配了keycloak.enabled开关,无需额外写条件注解也能自动控制自动配置是否生效。

注意事项

  • 如果你的接口上有权限校验注解如@PreAuthorize,在禁用Keycloak的环境下如果要跳过校验,可以给对应接口也加上@Profile注解适配不同环境的权限规则,或者把不需要校验的路径配置为公共访问路径。
  • 启动时指定--spring.profiles.active=你的目标profile即可自动触发对应Keycloak的启用/禁用逻辑,无需修改代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 05:54:03