我是Keycloak的新手。我正试图用Keycloak来保护我的REST应用程序。该应用程序包含几个Spring配置文件,它们在配置、工作流和公开的REST方法上有所不同。如何仅为特定配置文件启用Keycloak ?谢谢你!
使用SpringBoot 2.5.4
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.4</version>
<relativePath/>
</parent>
应用程序。属性文件看起来像:
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
配置keycloak for springboot的文档如下:https://www.keycloak.org/docs/latest/securing_apps/_spring_boot_adapter
2.1.6。Spring Boot Adapter编辑此部分报告问题
为了能够确保Spring启动应用程序,您必须添加Keycloak Spring启动适配器JAR到你的应用程序。然后你必须提供一些额外的通过正常的Spring Boot配置配置(application.properties)。让我们回顾一下这些步骤。适配器安装
Keycloak Spring Boot适配器利用了Spring Boot的所以你所需要做的就是添加Keycloak Spring将启动器启动到您的项目。
要使用Maven添加它,请在依赖项中添加以下内容: org.keycloakkeycloak-spring-boot-starter添加适配器BOM依赖:
org.keycloak.bomkeycloak-adapter-bom15.0.2砰的一声进口
目前支持和不支持以下嵌入容器如果使用Starter,需要任何额外的依赖项:
Tomcat Undertow Jetty
Required Spring Boot Adapter Configuration
本节描述如何配置Spring Boot应用程序来使用Keycloak .
代替keycloak。Json文件中,您为Spring Boot Keycloak适配器通过正常的Spring Boot配置。例如:
keycloak。Realm = demorealm keycloak。auth-server-url =http://127.0.0.1:8080 auth keycloak。Ssl-required = externalkeycloak。资源= demoapp keycloak.credentials.secret =11111111-1111-1111-1111-111111111111keycloak。Use-resource-role-mappings = true
您可以禁用Keycloak Spring Boot Adapter(例如在通过设置keycloak进行测试。启用= false.
要配置一个策略强制器,不像keycloak.json,必须使用policy-enforcer-config,而不仅仅是policy-enforcer。
您还需要指定Java EE安全配置通常在web。xml中。弹簧引导适配器将设置login-method配置KEYCLOAK的安全约束启动时间。下面是一个配置示例:
keycloak.securityConstraints[0]。authRoles[0] = adminkeycloak.securityConstraints[0]。authRoles[1] = userkeycloak.securityConstraints[0].securityCollections[0].name =不安全的东西keycloak.securityConstraints [0] .securityCollections[0]。模式[0]=/不安全的
keycloak.securityConstraints[1]。authRoles[0] = adminkeycloak.securityConstraints[1].securityCollections[0].name = admin的东西keycloak.securityConstraints [1] .securityCollections[0]。模式[0]=/管理
如果您计划将Spring应用程序部署为WAR,那么您需要不应该使用弹簧引导适配器而使用专用适配器吗对于您正在使用的应用程序服务器或servlet容器。你的Spring Boot还应该包含一个web.xml文件。