Keycloak自定义主题

一、背景

最近做的项目,需要集成keycloak。对于要上线的项目,那就需要定制一套属于自己风格的主题。

目前用的是最新的稳定版本22.0。

https://github.com/keycloak/keycloak/tree/release/22.0

二、如何自定义主题

  • 这是官网的教程,自定义主题。(这里可以简单了解一下基本知识,官网介绍的不是很详细,只是简单介绍了登录页面的定制,其他的比较少)
  • 我们先看看github上主题的目录结构 ,一共有五个主题admin、eamil、account、login、welcome。(这里我们需要先git 下来)

  • 我们先将需要定制的主题复制到自己的目录下面。比如我这里是mytheme/login,login这个主题,直接从keycloak目录下面复制过来,其他的也是一样,复制到自己目录下面,基于原本的主题进行修改。

然后修改对应的css还有ftl模板,就可以生成自己想要的风格,因为login主题是继承与base的,所有修改对应的样式就会进行覆盖。

(这里如何知道要修改的样式所对应的文件,我是通过浏览器点击,查看对应的文字,或者css、图片,然后去文件里面搜索进行修改。)

  • 然后定制admin的时候,会发现base/admin,只有一个messages_en.properties文件,选了这个主题的时候,页面加载不出来。我们需要添加一个文件。

这里我通过浏览器的请求发现,他默认是keycloak.v2下的主题,所以继承base也加载不出来。

三、自定义主题遇到的一些坑

  • 然后我这里遇到一些坑,因为需要中文化,所以原本的messages_en.properties,需要修改成messages_zh_CN.properties,但是还有一个问题,页面显示的时候出现了乱码。后面发现将中文转出unicode编码,页面就可以识别了。(这里没有仔细看官网,其实在文件的头部加一个#encoding=utf-8 ,就可以识别中文了。)
  • 在定制account这个主题的时候,直接复制过来发现,页面并没有生效,加载不出来,发现父类继承需要修改(parent=keycloak.v2),admin主题也是一样。
  • 这里我们会发现有些主题里面就一个文件,根本不知道怎么修改内容,这里我找了很多资料也没找到对应的修改文档,就通过浏览器看到的路径,然后在对应的路径里面进行覆盖。(这里尝试了图片、css这些直接可以覆盖,但是文本内容不知道如何修改。)
  • 然后我mytheme/welcome主题,目前遇到一个问题,不管怎么修改,页面的样式都是来自于keycloak/welcome,并没有加载到我的主题,目前还未解决 。

四、docker

自己的测试的时候,禁止缓存,这样的话修改对应挂载的目录,样式能及时刷新出来,不需要每次都重启容器。

这里我通过容器来跑比较方便点,通过将主题copy到容器里面,然后在keycloak主题那里就会多出对应的选择。(这里也可以去官网下载代码,在linux或者windows下跑,不过要配一下环境,需要jdk17)

三个文件在同一个目录下
1、 .env 

#keycloak
KEYCLOAK_ADMIN=admin
KEYCLOAK_ADMIN_PASSWORD=admin


2、 Docker-Compose.yaml

version: '3'

services:
  chat-copilot-webapi:
    image: ai4c-keycloak
    build: 
      context: ./
      dockerfile: Dockerfile
    ports:
      - 8080:8080
    env_file:
      - ./.env
    volumes:
      - D:/githubSource/keycloak-clustered/22.0.3/themes/mytheme:/opt/keycloak/themes/mytheme

3、  Dockerfile

FROM quay.io/keycloak/keycloak:22.0 as builder

WORKDIR /opt/keycloak

RUN /opt/keycloak/bin/kc.sh build

FROM quay.io/keycloak/keycloak:22.0

COPY --from=builder /opt/keycloak/ /opt/keycloak/

# 主题模板

# COPY source dest

# 开发环境
# ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "start-dev"] 

# 禁用缓存  修改样式可以立马生效
ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "start-dev", "--spi-theme-static-max-age=-1", "--spi-theme-cache-themes=false", "--spi-theme-cache-templates=false"]

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Kubernetes(简称k8s)是一个开源的容器编排引擎,可以用于自动化部署、扩展和管理容器化应用程序。Keycloak是一个开源的身份和访问管理解决方案,它提供了诸如单点登录(SSO)、多因素身份验证、授权等功能。在k8s环境中部署和自定义Keycloak可以帮助我们更好地管理和保护我们的应用程序。 首先,在k8s集群中部署Keycloak的步骤包括创建一个Deployment来运行Keycloak容器、创建一个Service将Keycloak容器暴露出来、配置Ingress来管理对Keycloak的访问。可以通过编写YAML文件来定义Deployment、Service和Ingress资源,然后使用kubectl命令将其部署到k8s集群中。 其次,自定义Keycloak可以包括配置主题、引入自定义的身份提供者、定义客户端等。通过在Keycloak的管理后台进行相应的配置,我们可以定制化Keycloak的外观和行为,以满足具体的业务需求。 最后,在部署和自定义Keycloak时需要注意的问题包括配置数据库、管理用户、设置安全策略等。我们需要选择合适的数据库作为Keycloak的持久化存储,并根据实际情况管理用户的访问权限。此外,为了保证应用程序的安全性,我们还需要设置适当的安全策略和监控机制。 总之,通过在k8s集群中部署和自定义Keycloak,我们可以实现统一的身份和访问管理,并且能够满足不同应用程序的特定需求。这不仅可以提高系统的安全性和可靠性,还可以简化用户的身份管理和访问控制流程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Mikey689

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

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

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

打赏作者

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

抵扣说明:

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

余额充值