java - Keycloak 在重置密码电子邮件中添加公司 Logo

标签 java html keycloak

我正在尝试在重置密码电子邮件中显示公司 Logo 。 我已经检查了 keycloak 文档,发现它们不支持它。我还尝试将图像编码为 base64,但 Gmail 不支持。我怎样才能做到这一点?

最佳答案

您需要创建一个自定义主题。 检查Keycloak的文档第3章:docs

有五种类型的主题/页面:

  • 帐户 - 帐户管理
  • 管理员 - 管理控制台
  • 电子邮件 - 电子邮件
  • 登录 - 登录表单
  • 欢迎 - 欢迎页面

您可以从 checkout 此示例存储库开始 kc themes sample ,编辑模板并将其部署到您的 keycloak 中。

就像链接所说...部署它:

Copy

Simplest way to deploy the themes is to copy src/main/resources/theme/* to themes/.

Module

Alternatively you can deploy as modules. This can be done by first running:

mvn clean install $KEYCLOAK_HOME/bin/jboss-cli.sh --command="module add --name=org.keycloak.example.themes --resources=target/keycloak-example-themes.jar"

Then open standalone/configuration/standalone.xml and register the theme module by adding:

<theme>
    ...
    <modules>
        <module>org.keycloak.example.themes</module>
    </modules>
</theme>

您可以复制其他主题或从 base templates 复制扩展它到您的自定义主题项目。

电子邮件基本模板:email templates

在 checkout 项目和源代码之前,请注意选择相同的 Keycloak 版本。

将 Logo 添加到现有自定义主题内的电子邮件模板的步骤

  1. 找到您的模板文件:/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-plain (文件:text/password-reset.ftl

    更新:

    目前,某些电子邮件客户端存在一些限制。 我建议您阅读以下有关它的注释 ( read me )。

    正如上面所说,许多 Web 客户端不会显示包含多个嵌入 Base64 图像的电子邮件(或不显示任何图像)。

    因此,Keycloak 电子邮件的一个好策略是使用对静态内容服务器提供的图像的引用(如果您没有其中之一,keycloak 位于也可以配置为静态服务器的 Wildfly 上) )。

    因此,您可以实现的最佳解决方案是添加图像,如下所示: 例如。

    <img src = "https://static.myserver.com/static/logo.png" alt = "img" />
    

    关于java - Keycloak 在重置密码电子邮件中添加公司 Logo ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57692616/

    相关文章:

    初始化组合框时抛出 Java 内存不足异常

    java - 你知道像 Swing 组件这样复杂的电子表格吗

    javascript - OAuth 2.0 OpenID Connect 环回和 Keycloak

    docker - 在 Docker 中使用 KeyCloak 设置集成测试环境

    keycloak - Keycloak 的 OAuth2/OpenID Connect 端点是什么?

    java - 如何使用 C/java 检测 Activity 应用程序?

    java - 使用Qt/C++通过JNI调用Java代码。 FindClass 没有找到类

    javascript - NG-repeat 和指令一次展开一个列表项

    javascript - 我们如何使用 jquery 在 select 标签中设置选项

    php - 如何使用 AJAX 和 PHP 返回多个项目