解决 MFA 中的自定义电子邮件问题
Azure B2C 为用户身份验证流程提供了广泛的自定义选项,包括针对各种场景发送自定义电子邮件的功能。在设置自定义策略以启用本地帐户登录和忘记密码流程时,从处理使用条款到通过 SendGrid 自定义电子邮件,一切都可以无缝运行。
但是,当登录期间的多重身份验证 (MFA) 过程无法发送验证码的自定义电子邮件,而是恢复为默认的 Microsoft 租户电子邮件时,就会出现一个常见问题。本文探讨了这个问题并提供了如何有效解决该问题的指导。
| 命令 | 描述 |
|---|---|
| <BasePolicy> | 定义要在 Azure AD B2C 自定义策略中继承的基本策略。 |
| <ClaimsTransformations> | 包含声明的转换,例如生成自定义电子邮件主题。 |
| ClaimsTransformation | 指定单个声明转换,包括输入和输出声明。 |
| SendGridClient | 初始化 SendGrid 客户端以发送电子邮件。 |
| SendGridMessage | 创建用于通过 SendGrid 发送电子邮件的消息对象。 |
| AddTo | 将收件人添加到电子邮件中。 |
| SendEmailAsync | 使用 SendGrid 客户端异步发送电子邮件。 |
了解 Azure B2C 中的自定义 MFA 电子邮件实施
上面提供的脚本旨在在 Azure B2C 中的登录过程中发送自定义 MFA 验证电子邮件。第一个脚本涉及为 Azure AD B2C 配置自定义策略 XML。在此 XML 中, <BasePolicy> 标签用于继承基础策略,确保包含所有基础配置。这 <ClaimsTransformations> 部分包含声明的转换,例如使用 ClaimsTransformation 元素。这些转换允许动态定制 MFA 电子邮件内容。
第二个脚本是一个 C# Azure 函数,它使用 SendGrid 发送自定义电子邮件。该函数由队列触发,由 [QueueTrigger("mfa-email-queue")] 属性。它使用以下命令初始化 SendGrid 客户端 SendGridClient 并使用创建电子邮件消息 SendGridMessage。这 AddTo 方法将收件人添加到电子邮件中,并且 SendEmailAsync 异步发送电子邮件。此设置可确保使用 SendGrid 中定义的自定义内容发送 MFA 电子邮件,从而解决登录流程期间发送默认 Microsoft 租户电子邮件的问题。
在 Azure B2C 中实施用于 MFA 验证的自定义电子邮件
Azure AD B2C 自定义策略的 XML 配置
<TrustFrameworkPolicy xmlns="http://schemas.microsoft.com/online/cpim/schemas/2013/06"><BasePolicy><PolicyId>B2C_1A_TrustFrameworkBase</PolicyId></BasePolicy><BuildingBlocks><ClaimsTransformations><ClaimsTransformation Id="CreateMfaEmailSubject"><InputClaims><InputClaim ClaimTypeReferenceId="email" TransformationClaimType="email"/></InputClaims><OutputClaims><OutputClaim ClaimTypeReferenceId="email" TransformationClaimType="email"/></OutputClaims></ClaimsTransformation></ClaimsTransformations>
自定义登录流程以使用 SendGrid
C# Azure 函数通过 SendGrid 发送自定义电子邮件
using System.Threading.Tasks;using Microsoft.Azure.WebJobs;using Microsoft.Extensions.Logging;using SendGrid;using SendGrid.Helpers.Mail;public static async Task Run([QueueTrigger("mfa-email-queue")] string email, ILogger log){var client = new SendGridClient(Environment.GetEnvironmentVariable("SendGridApiKey"));var msg = new SendGridMessage(){From = new EmailAddress("no-reply@yourdomain.com", "Your Company"),Subject = "Your MFA Verification Code",PlainTextContent = $"Your verification code is {email}",HtmlContent = $"<strong>Your verification code is {email}</strong>"};msg.AddTo(new EmailAddress(email));var response = await client.SendEmailAsync(msg);}
在 Azure B2C 中自定义 MFA 电子邮件的高级技术
在 Azure B2C 中自定义 MFA 电子邮件时要考虑的另一个重要方面是确保自定义策略中的正确编排步骤。这涉及在用户旅程中定义和配置其他步骤,以正确处理 MFA 电子邮件的发送。一种有效的技术是在登录策略中添加专用于电子邮件验证的新编排步骤。此步骤应利用声明转换和技术配置文件来调用电子邮件发送过程。
此外,调试和监控用户旅程以确保调用正确的电子邮件模板和 API 也很重要。使用 Application Insights 等工具可以帮助跟踪和诊断自定义策略执行中的问题。这样可以进行实时监控和故障排除,确保在 MFA 过程中按预期发送自定义电子邮件。
有关 Azure B2C 中自定义 MFA 电子邮件的常见问题和解答
- 如何在 Azure B2C 中为 MFA 配置自定义电子邮件模板?
- 使用 SendGrid 或其他电子邮件服务来创建和管理自定义电子邮件模板,然后将其集成到您的 B2C 自定义策略中。
- 发送自定义 MFA 电子邮件需要哪些编排步骤?
- 包括一个专用的 orchestration step 用于登录政策中的电子邮件验证。
- 如何确保在登录流程中使用自定义电子邮件?
- 更新用户旅程以在适当的编排步骤中引用自定义电子邮件模板。
- 为什么在 MFA 期间仍然发送默认的 Microsoft 电子邮件?
- 检查自定义策略是否正确引用 custom email provider 和模板。
- 如何调试 Azure B2C 中的自定义电子邮件发送问题?
- 使用 Application Insights 监控和诊断用户旅程和电子邮件发送过程。
- 除了 SendGrid 之外,我还可以使用其他电子邮件服务吗?
- 是的,Azure B2C 支持各种电子邮件提供商;您需要在自定义策略中适当配置它们。
- 自定义 MFA 电子邮件需要哪些声明转换?
- 定义必要的 claims transformations 动态生成和格式化电子邮件内容。
- 是否可以自定义发件人电子邮件地址?
- 是的,在电子邮件服务配置中指定发件人地址并在策略中引用它。
- 如何测试自定义 MFA 电子邮件流?
- 使用测试帐户并触发登录过程,以确保自定义电子邮件正确发送。
关于在 Azure B2C 中自定义 MFA 的最终想法
配置 Azure B2C 以发送自定义电子邮件以进行 MFA 验证涉及理解并正确设置各种元素,例如编排步骤、声明转换以及集成 SendGrid 等外部服务。尽管该过程可能很复杂,但遵循详细指南并使用适当的调试工具可以帮助确保在登录流程中可靠地发送自定义电子邮件。这不仅增强了安全性,还通过提供无缝的品牌身份验证流程改善了用户体验。