spring-boot - Keycloak 与 Spring Boot 集成

标签 spring-boot keycloak

如何将 keycloak 与 spring boot 应用程序集成。我们是否必须在 application.properties 中授予所有资源及其角色权限?那么keycloak.json有什么用呢?然后我需要在 keycloak 的管理控制台中对这些导出设置进行一些说明。我们是否必须将该文件包含在应用程序的配置中?

最佳答案

1) 首先将这些依赖项添加到您的 build.gradle (我使用的是 gradle,但如果您是 Maven 人员,则 pom.xml 也是如此):

// keycloak
compile 'org.keycloak:keycloak-spring-boot-adapter:2.5.1.Final'
compile 'org.keycloak:keycloak-tomcat8-adapter:2.5.1.Final'

2) 然后在 application.properties 文件中提供您的 Keycloak 配置(此时您应该已经配置了您的领域并通过 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 Typebearer-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/*

关于spring-boot - Keycloak 与 Spring Boot 集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53493809/

相关文章:

ssl - 如何在 Spring-boot 上启用 TLS 1.2?

java - 带有 ImageUpload 端点的空文件

Spring 云侦探与 Spring 数据 jpa

使用 chrome 扩展进行 Keycloak 登录

java - 从 Java API 访问 keycloak 角色/用户属性

mysql - Spring Data JPA 基于时间戳列获取数据

spring-boot - Spring 休息: Show certain data of a User only if requester is a friend

angularjs - key 斗篷, Angular : Authorization on demand

keycloak - 如果浏览器关闭但未注销,keycloak 是否会破坏用户 session ?

json - kubernetes 上的 Keycloak 和使用 log4j2 记录 json 布局格式