通过Keycloak管理控制台创建用户时,是否可以通过电子邮件通知用户已创建配置文件,并且用户可以通过链接完成注册? 当前,只有在创建后为该用户设置密码的情况下,该用户才能收到有关正在创建的配置文件的电子邮件。并且只有在初次登录尝试之后。但是对于这种登录尝试,用户应该知道所设置的密码。
答案 0 :(得分:3)
我通过为发送的电子邮件和登录页面自定义keycloak主题模板来完成同样的事情。这是Keycloak docs,有关如何自定义主题的信息。
这是我的操作方式的详细信息:
首先,我非常漂亮地自定义了executeActions.ftl电子邮件模板,并说“欢迎使用我们的应用程序,请单击下面的链接以完成您的帐户设置”。我继续使用默认基础模板中的链接和链接过期说明。您可以在https://github.com/keycloak/keycloak/blob/master/themes/src/main/resources/theme/base/email/html/executeActions.ftl
看到默认的基本模板第二,我们决定了新用户将“需要”哪些标准的密钥隐藏操作。我们决定要完成注册,将要求用户执行以下操作:
第三,我们设置Keycloak领域,要求所有用户都要执行3个步骤。 在Keycloak管理控制台中,我们将它们设置为“必需”操作(在“配置->身份验证->必需操作下”),将“条款和条件”,“更新配置文件”和“更新密码”操作标记为“已启用” ”和“默认操作”。我们还将这些操作按照希望它们出现在用户将逐个屏幕浏览的“帐户设置”过程中的确切顺序放置。对于其他操作,我们未选中默认操作。
第四,我自定义了以下用于显示帐户设置页面的密钥库登录模板。嵌入在executeActions电子邮件(来自步骤1)中的密钥库生成的链接会将用户带到这些“帐户设置”网页:
<!-- info.ftl -->
<#import "template.ftl" as layout>
<@layout.registrationLayout displayMessage=false; section>
<#if section = "header">
<#if messageHeader??>
${messageHeader}
<#else>
<#if message.summary == msg('confirmExecutionOfActions')>
${kcSanitize(msg('welcomeToOurApplication'))?no_esc}
<#elseif message.summary == msg('accountUpdatedMessage')>
${kcSanitize(msg('accountSuccessfullySetup'))?no_esc}
<#else>
${message.summary}
</#if>
</#if>
<#elseif section = "form">
<div id="kc-info-message">
<div class="kc-info-wrapper">
<#if message.summary == msg('confirmExecutionOfActions')>
${kcSanitize(msg('startSettingUpAccount'))?no_esc}
<#elseif message.summary == msg('accountUpdatedMessage')>
${kcSanitize(msg('accountIsReadyPleaseLogin'))?no_esc}
<#else>
${message.summary}
</#if>
</div>
<#if pageRedirectUri??>
... <!-- Omitted the rest because it's the same as the base template -->
我还自定义了以下模板,它们与帐户设置过程中的步骤相对应。
第五,当管理员创建新用户时,他/她触发向用户发送欢迎电子邮件: -在Keycloak管理控制台中,“添加”新用户后,转到该用户的“凭据”标签,然后在“凭据重置”下选择“重置操作”下所需的帐户设置操作,然后单击“发送电子邮件”按钮。
无论如何,我希望这会有所帮助。我记得我花了一些时间才弄清楚,因为这不是密钥斗篷内的标准流程。