【问题标题】:Enabling Keycloak for specific Spring profile为特定 Spring 配置文件启用 Keycloak
【发布时间】:2021-11-19 14:52:01
【问题描述】:

我是 Keycloak 的新手。我正在尝试使用 Keycloak 保护我的 REST 应用程序。该应用程序包含多个 Spring 配置文件,它们在配置、工作流程和公开的 REST 方法方面有所不同。如何仅为特定配置文件启用 Keycloak?谢谢!

【问题讨论】:

    标签: java spring-boot keycloak


    【解决方案1】:

    使用 SpringBoot 2.5.4

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.5.4</version>
        <relativePath/>
    </parent>
    

    application.properties 文件如下所示:

    spring.profiles.active=staging
    
    #---
    spring.config.activate.on-profile=dev
    keycloak.enabled = false
    
    #---
    spring.config.activate.on-profile=staging
    keycloak.realm = demorealm
    keycloak.auth-server-url = http://127.0.0.1:8080/auth
    keycloak.ssl-required = external
    keycloak.resource = demoapp
    keycloak.credentials.secret = 11111111-1111-1111-1111-111111111111
    keycloak.use-resource-role-mappings = true
    

    为springboot配置keycloak的文档是: https://www.keycloak.org/docs/latest/securing_apps/#_spring_boot_adapter


    2.1.6。 Spring Boot Adapter 编辑本节 报告问题

    为了能够保护 Spring Boot 应用程序,您必须添加 Keycloak Spring 将适配器 JAR 引导到您的应用程序。然后你必须提供一些额外的 通过普通 Spring Boot 配置进行配置 (应用程序。属性)。让我们回顾一下这些步骤。适配器 安装

    Keycloak Spring Boot 适配器利用了 Spring Boot 的 自动配置,所以您需要做的就是添加 Keycloak Spring 启动您的项目。

    要使用 Maven 添加它,请将以下内容添加到您的依赖项中:

    org.keycloak keycloak-spring-boot-starter

    添加适配器 BOM 依赖项:

    org.keycloak.bom keycloak-适配器-bom 15.0.2 绒球 进口

    目前支持但不支持以下嵌入式容器 如果使用 Starter,则需要任何额外的依赖项:

    Tomcat
    
    Undertow
    
    Jetty
    

    必需的 Spring Boot 适配器配置

    本节介绍如何配置您的 Spring Boot 应用程序以使用 钥匙斗篷。

    您配置的领域不是 keycloak.json 文件,而是 Spring Boot Keycloak 适配器通过正常的 Spring Boot 配置。 例如:

    keycloak.realm = demorealm keycloak.auth-server-url = http://127.0.0.1:8080/authkeycloak.ssl-required = 外部 keycloak.resource = 演示应用 keycloak.credentials.secret = 11111111-1111-1111-1111-111111111111 keycloak.use-resource-role-mappings = true

    您可以禁用 Keycloak Spring Boot Adapter(例如在 测试)通过设置 keycloak.enabled = false。

    要配置策略执行器,与 keycloak.json 不同, 必须使用 policy-enforcer-config 而不仅仅是 policy-enforcer。

    您还需要指定 Java EE 安全配置 通常进入web.xml。 Spring Boot Adapter 将设置 登录方法到 KEYCLOAK 并在以下位置配置安全约束 启动时间。这是一个示例配置:

    keycloak.securityConstraints[0].authRoles[0] = 管理员 keycloak.securityConstraints[0].authRoles[1] = 用户 keycloak.securityConstraints[0].securityCollections[0].name = 不安全 东西 keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /不安全

    keycloak.securityConstraints[1].authRoles[0] = 管理员 keycloak.securityConstraints[1].securityCollections[0].name = admin 东西 keycloak.securityConstraints[1].securityCollections[0].patterns[0] = /管理员

    如果您计划将 Spring 应用程序部署为 WAR,那么您 不应使用 Spring Boot Adapter 并使用专用适配器 对于您正在使用的应用程序服务器或 servlet 容器。您的 Spring Boot 还应该包含一个 web.xml 文件。

    【讨论】:

      猜你喜欢
      • 2017-05-23
      • 2022-10-19
      • 2016-07-12
      • 2015-11-19
      • 1970-01-01
      • 2021-05-21
      • 2017-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多