第 3 章 使用带有 Spring Boot 的 Red Hat Single Sign-On
Red Hat Single Sign-On 客户端适配器是库,它非常容易使用 Red Hat Single Sign-On 来保护应用程序和服务。您可以使用 Keycloak Spring Boot 适配器来保护 Spring Boot 项目。
3.1. 在 Spring Boot Container 中使用 Red Hat Single Sign-On
要保护 Spring Boot 应用程序,请将 Keycloak Spring Boot 适配器 JAR 添加到您的项目中。Keycloak Spring Boot 适配器利用 Spring Boot 的自动配置功能,因此您需要做的都是将 Keycloak Spring Boot Start 添加到项目中。
流程
要手动添加 Keycloak Spring Boot starter,请将以下内容添加到项目的
pom.xml
中。<dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-spring-boot-starter</artifactId> </dependency>
添加 Adapter BOM 依赖项。
<dependencyManagement> <dependencies> <dependency> <groupId>org.keycloak.bom</groupId> <artifactId>keycloak-adapter-bom</artifactId> <version>3.4.17.Final-redhat-00001</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement>
将您的 Spring Boot 项目配置为使用 Keycloak。您可以使用正常的 Spring Boot 配置为 Spring Boot Keycloak 适配器配置域,而不是
keycloak.json
文件。例如,将以下配置添加到src/main/resources/application.properties
文件中。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.enabled = false
来禁用 Keycloak Spring Boot Adapter (例如在测试中)。要配置 Policy Enforcer,与keycloak.json
不同,必须使用policy-enforcer-config
而不是只使用policy-enforcer
。在
web.xml
中指定 Java EE 安全配置。Spring Boot Adapter 会将login-method
设置为 KEYCLOAK,并在启动时配置security-
constraint。下面是一个示例配置。keycloak.securityConstraints[0].authRoles[0] = admin keycloak.securityConstraints[0].authRoles[1] = user keycloak.securityConstraints[0].securityCollections[0].name = insecure stuff keycloak.securityConstraints[0].securityCollections[0].patterns[0] = /insecure keycloak.securityConstraints[1].authRoles[0] = admin keycloak.securityConstraints[1].securityCollections[0].name = admin stuff keycloak.securityConstraints[1].securityCollections[0].patterns[0] = /admin
注: 如果您计划将 Spring 应用程序部署为 WAR,则不要使用 Spring Boot Adapter。将专用适配器用于您正在使用的应用服务器或 servlet 容器。Spring Boot 也应包含
web.xml
文件。