spring-boot - Keycloak 与 Spring Boot 的集成
问题描述
如何将 keycloak 与 Spring Boot 应用程序集成。我们是否必须在 application.properties 中授予所有资源及其角色权限?那么keycloak.json有什么用呢?然后我需要在 keycloak 的管理控制台中对这些导出设置进行一些说明。我们是否必须将该文件包含在应用程序的配置中?
解决方案
1)首先将这些依赖项添加到您的build.gradle
(我正在使用 gradle,但pom.xml
如果您是 Maven 人,则相同):
// keycloak
compile 'org.keycloak:keycloak-spring-boot-adapter:2.5.1.Final'
compile 'org.keycloak:keycloak-tomcat8-adapter:2.5.1.Final'
2) 然后在文件中提供您的 Keycloak 配置application.properties
(此时您应该已经配置了您的领域并通过 Keycloak web-ui 添加了一个客户端):
keycloak.realm=[YOUR-REALM]
keycloak.bearer-only=true
keycloak.auth-server-url=https://[YOUR-KEYCLOAK-INSTANCE-ADDRESS]:[PORT]/auth
keycloak.ssl-required=external
keycloak.resource=[CLIEND-ID]
keycloak.credentials.secret=[YOUR-CLIENT-SECRET-ID]
keycloak.cors=true
keycloak.securityConstraints[0].securityCollections[0].name=insecure stuff
keycloak.securityConstraints[0].securityCollections[0].patterns[0]=/test-endpoint-1/*
keycloak.securityConstraints[1].securityCollections[0].name=admin stuff
keycloak.securityConstraints[1].securityCollections[0].authRoles[0]=[ROLE-2]
keycloak.securityConstraints[1].securityCollections[0].patterns[0]=/test-endpoint-2/*
在这里,我允许任何人访问 中的所有内容/test-endpoint-1/*
,而具有 [ROLE-2] 角色的管理员用户可以访问 下的任何内容/test-endpoint-2/*
。
啊,忘了说,客户Access Type
是bearer-only
。是的,使用此设置您不需要keycloak.json
. 希望这可以帮助 :)
更新
新的 API 发生了一些变化,所以给出了最新版本:
kotlinVersion = '1.3.10'
springBootVersion = '2.1.1.RELEASE'
keycloakVersion = '4.6.0.Final'
dependencyManagement {
imports {
mavenBom "org.keycloak.bom:keycloak-adapter-bom:${keycloakVersion}"
}
}
dependencies {
// keycloak
compile 'org.keycloak:keycloak-spring-boot-starter'
}
application.properties
在这种情况下,将如下所示:
keycloak.realm=[YOUR-REALM]
keycloak.bearer-only=true
keycloak.auth-server-url=https://[YOUR-KEYCLOAK-INSTANCE-ADDRESS]:[PORT]/auth
keycloak.ssl-required=external
keycloak.resource=[CLIEND-ID]
keycloak.credentials.secret=[YOUR-CLIENT-SECRET-ID]
keycloak.cors=true
keycloak.enabled=true
keycloak.securityConstraints[0].securityCollections[0].name=insecure stuff
keycloak.securityConstraints[0].securityCollections[0].patterns[0]=/test-endpoint-1/*
keycloak.securityConstraints[1].securityCollections[0].name=admin stuff
keycloak.securityConstraints[1].authRoles[0]=[ROLE-2]
keycloak.securityConstraints[1].securityCollections[0].patterns[0]=/test-endpoint-2/*
推荐阅读
- visual-studio - vcpkg安装了qt5,但是#include .h文件报错
- linux - 清理 Docker 覆盖文件夹
- 3d - 如果我将 nn.Conv2d 直接更改为 nn.Conv3d 会怎样?
- rselenium - 谷歌 Chrome 浏览器的 R 代码中的 setScriptTimeout
- java - 使用 PDFBox 获取 pdf 中图像的显示大小
- angularjs - UI 选择 AngularJs 默认的多个值
- android - 颤动如何检查地图是否为空?
- mongodb - 如何从 Windows 连接和使用 MongoDB Compass 到 WSL2 上的 MongoDb 服务器
- elasticsearch - ElasticSearch:如何仅搜索 N 文档以获取大规模索引?
- swift - 看到一些默认 CIFilter 的实现了吗?