Springboot 集成keycloak admin-cli api
Posted 浦江之猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Springboot 集成keycloak admin-cli api相关的知识,希望对你有一定的参考价值。
Springboot 集成keycloak admin-cli api
)
前言
本文适合有keycloak的基础的同学参考。
语言: java
框架: spring-boot
运行环境: docker
最近在做一个项目,使用keycloak作为鉴权服务,公司的安全策略要求keycloak本身提供的master realm不能出现在配置文件,因此花了些功夫研究了一番,主要的工作都在于配置。
keycloak配置
安装keycloak
通过docker在本地将keycloak跑起来,参考此博文:Keycloak - Getting started - Docker ,主要是运行命令:
docker run -p 8080:8080 -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin quay.io/keycloak/keycloak:17.0.0 start-dev
成功运行之后页面是下图这样的,接下来就是配置工作了。使用命令中用到的用户名和密码即可
Keycloak默认会提供一个master realm, 可以理解为超级管理员。建议大家在开发过程中不要将master写到配置文件中去,很不安全,可以创建自己的realm。下文介绍如何在代码中避免使用master。
创建realm
左上角,Master->Add realm
创建client
在刚创建的realm下创建client,主要的配置都是在client下进行
client创建好后,会进入settings 标签页,在此标签页,将Access Type设为 confidential 以及将Services Accounts Enabled设为On。
做好以上两步点击保存,会生成新的标签页“Credentials” 和“Services Accounts Roles”。Crendntial标签页中的secret需要写入到配置文件中。
配置角色
在刚新生成的Services Accounts Roles标签页中配置角色
到这,页面上的操作也就结束了。
Springboot 项目中的配置:
spring-boot 配置文件
keycloak:
protocol: http
host: 127.0.0.1:8080
admin-client-id: poc-cli
realm: poc-realm
client-secret: ***来自keycloak页面***
配置文件映射类
@ConfigurationProperties(prefix = "keycloak")
@ConstructorBinding
@RequiredArgsConstructor
@Getter//这里使用了lombok,所以代码中没有get方法
@ToString
public class KeycloakConfig
/**
* Indicate the protocol of auth url of keycloak
*/
private final String protocol;
/**
* Indicate the host of keycloak auth url
*/
private final String host;
/**
* Indicate the id of configured admin client in keycloak
*/
private final String adminClientId;
/**
* Indicate the configured realm in keycloak
*/
private final String realm;
/**
* Indicate the client secret in keycloak
*/
private final String clientSecret;
keycloak客户端配置类
@Bean
public Keycloak client()
String serverUrl = keycloakConfig.getProtocol() + "://" + keycloakConfig.getHost();
return KeycloakBuilder.builder()
.grantType("client_credentials")
.serverUrl(serverUrl)
.realm(keycloakConfig.getRealm())
.clientId(keycloakConfig.getAdminClientId())
.clientSecret(keycloakConfig.getClientSecret())
.build();
至此,所有的配置结束,祝大家在IT之路上少走弯路,一路绿灯不堵车,测试一性通过,bug秒解!
以上是关于Springboot 集成keycloak admin-cli api的主要内容,如果未能解决你的问题,请参考以下文章
Keycloak - spring boot - 外部登录网页
如何在没有登录页面的情况下将 Keycloak 与 Spring Boot(API) 集成
Spring Boot - KeyCloak 指向 403 禁止
Keycloak 与 Spring boot 集成,使用自定义登录页面(在没有 keycloak 的默认登录页面的情况下登录)