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秒解!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
好的,对于集成 xxx-job 到 Spring Boot 项目中,你可以按照以下步骤进行操作: 1. 添加 xxx-job 的依赖: ``` <dependency> <groupId>com.xxl.job</groupId> <artifactId>xxl-job-core</artifactId> <version>${xxl.job.version}</version> </dependency> ``` 其中,`${xxl.job.version}` 是需要替换成你所使用的 xxx-job 的版本号。 2. 在 Spring Boot 项目中添加配置文件 `application.properties`,并添加 xxx-job 的配置: ``` # xxl-job config xxl.job.admin.addresses=http://localhost:8080/xxl-job-admin xxl.job.executor.appname=executor-sample xxl.job.executor.address= xxl.job.executor.ip= xxl.job.executor.port=9999 xxl.job.accessToken= xxl.job.executor.logpath=/data/applogs/xxl-job/jobhandler xxl.job.executor.logretentiondays=7 ``` 其中,`xxl.job.admin.addresses` 是 xxx-job 的管理地址,`xxl.job.executor.appname` 是执行器的名称,可以自定义,其他配置项可以根据实际情况进行修改。 3. 创建任务类并实现 `IJobHandler` 接口: ``` @Component public class DemoJobHandler extends IJobHandler { @Override public ReturnT<String> execute(String param) throws Exception { System.out.println("Hello, xxl-job!"); return ReturnT.SUCCESS; } } ``` 4. 在 Spring Boot 项目中添加任务调度配置类: ``` @Configuration public class XxlJobConfig { @Autowired private DemoJobHandler demoJobHandler; @Bean public XxlJobSpringExecutor xxlJobExecutor() { XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); xxlJobSpringExecutor.setAdminAddresses("http://localhost:8080/xxl-job-admin"); xxlJobSpringExecutor.setAppname("executor-sample"); xxlJobSpringExecutor.setLogPath("/data/applogs/xxl-job/jobhandler"); xxlJobSpringExecutor.setLogRetentionDays(7); xxlJobSpringExecutor.setJobHandlers(demoJobHandler); return xxlJobSpringExecutor; } } ``` 其中,`demoJobHandler` 是步骤 3 中创建的任务类。 5. 在 xxx-job 的管理平台上添加任务,并配置执行器为 `executor-sample`。 至此,你已经成功地将 xxx-job 集成Spring Boot 项目中,并创建了一个简单的任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浦江之猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值