您需要创建一个自定义主题。
查看 Keycloak 的文档第 3 章:docs
有五种类型的主题/页面:
- 帐户 - 帐户管理
- 管理员 - 管理控制台
- 电子邮件 - 电子邮件
- 登录 - 登录表单
- 欢迎 - 欢迎页面
您可以先签出此示例存储库kc themes sample,编辑模板并将其部署到您的密钥斗篷中。
就像链接说的那样......部署它:
复制
部署主题的最简单方法是复制
src/main/resources/theme/* 到主题/。
模块
或者,您可以部署为模块。这可以通过
首次运行:
mvn clean install $KEYCLOAK_HOME/bin/jboss-cli.sh --command="module add --name=org.keycloak.example.themes --resources=target/keycloak-example-themes.jar"
然后打开standalone/configuration/standalone.xml
并通过添加注册主题模块:
<theme>
...
<modules>
<module>org.keycloak.example.themes</module>
</modules>
</theme>
您可以复制其他主题或将其从 base templates 复制到您的自定义主题项目中。
电子邮件基本模板:email templates
在签出项目和来源之前,请注意选择相同的 Keycloak 版本。
在现有自定义主题中向电子邮件模板添加徽标的步骤
- 找到您的模板文件:/html/password-reset.ftl(例如base sample file)
<html>
<body>
${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</body>
</html>
- 替换为您的代码。例如。使用 base64 图像或对图像文件的链接引用(https://static.myserver.com/image.png 等...)
<html>
<body>
<div>
<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red Logo">
</div>
<div>
${kcSanitize(msg("passwordResetBodyHtml",link, linkExpiration, realmName, linkExpirationFormatter(linkExpiration)))?no_esc}
</div>
</body>
</html>
也更新您的纯文本模板(如果您需要,因为并非所有客户端都支持 html)。您不能在此处添加图片,但如果有短信 [file text/password-reset.ftl]
在 Keycloak 中打包和部署您的主题
在“领域配置”选项卡中选择您的电子邮件模板
正如您在DefaultEmailSenderProvider.java 类中看到的那样,Keycloak 将尝试发送 HTML 电子邮件,如果您未定义它,则使用纯文本(文件:text/password-reset.ftl
更新:
目前有一些电子邮件客户端施加了一些限制。
我建议您阅读以下有关它的说明 (read me)。
正如它所说,许多网络客户端不会显示包含多个嵌入 base64 图像的电子邮件(或一个都不包含)。
因此,使用 Keycloak 电子邮件的一个好策略是使用对从静态内容服务器提供的图像的引用(如果您没有其中一个,keycloak 是通过也可以配置为静态服务器的野蝇)。
因此,您可以实施的最佳解决方案是按如下方式添加您的图片:
例如。
<img src = "https://static.myserver.com/static/logo.png" alt = "img" />