Azure AD B2C仅LocalAccounts自定义策略报错及SendGrid集成需求问询
方案1:User Flows简易SendGrid集成(仅需API密钥、模板ID即可配置)
该方案无需修改自定义策略,直接在Azure门户操作即可完成配置:
- 进入你的Azure AD B2C资源,左侧菜单选择「用户流」,点击需要配置的本地账户用户流
- 在用户流配置页左侧找到「自定义邮件验证」选项
- 勾选「使用自定义邮件验证」,提供商选择SendGrid
- 按提示填入你的SendGrid API密钥、已验证发件人邮箱、提前在SendGrid后台创建的动态模板ID
- 保存配置后直接测试用户流即可使用,无需额外修改代码或策略文件
方案2:LocalAccounts自定义策略集成SendGrid配置指南
如果必须使用自定义策略,可按以下步骤修改你的LocalAccounts示例策略:
前置准备
提前确认你已获取:SendGrid API密钥、已验证的发件人邮箱、SendGrid动态模板ID
配置步骤
- 第一步:在扩展策略文件(通常为
TrustFrameworkExtensions.xml)的ClaimsProviders节点下新增SendGrid声明提供方:
<ClaimsProvider> <Domain>SendGrid</Domain> <DisplayName>SendGrid 邮件服务</DisplayName> <TechnicalProfiles> <TechnicalProfile Id="SendGrid.Common"> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="ServiceUrl">https://api.sendgrid.com/v3/mail/send</Item> <Item Key="AuthenticationType">Bearer</Item> <Item Key="SendClaimsIn">Body</Item> <Item Key="ClaimUsedForRequestPayload">sendGridRequestBody</Item> </Metadata> <CryptographicKeys> <Key Id="BearerAuthenticationToken" StorageReferenceId="B2C_1A_SendGridApiKey" /> </CryptographicKeys> </TechnicalProfile> <TechnicalProfile Id="SendGrid.SendVerificationEmail"> <InputClaimsTransformations> <InputClaimsTransformation ReferenceId="GenerateSendGridVerificationEmailBody" /> </InputClaimsTransformations> <InputClaims> <InputClaim ClaimTypeReferenceId="sendGridRequestBody" /> </InputClaims> <IncludeTechnicalProfile ReferenceId="SendGrid.Common" /> </TechnicalProfile> </TechnicalProfiles> </ClaimsProvider>
- 第二步:新增声明转换,拼接SendGrid请求参数,替换为你自己的模板ID、发件人信息:
<ClaimsTransformations> <ClaimsTransformation Id="GenerateSendGridVerificationEmailBody" TransformationMethod="GenerateJson"> <InputClaims> <InputClaim ClaimTypeReferenceId="email" TransformationClaimType="personalizations.0.to.0.email" /> <InputClaim ClaimTypeReferenceId="verificationCode" TransformationClaimType="personalizations.0.dynamic_template_data.verificationCode" /> </InputClaims> <InputParameters> <InputParameter Id="template_id" DataType="string" Value="替换为你的SendGrid模板ID" /> <InputParameter Id="from.email" DataType="string" Value="替换为你的已验证发件人邮箱" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="sendGridRequestBody" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> </ClaimsTransformations>
- 第三步:找到
LocalAccountSignUpWithLogonEmail技术配置,将原有发送验证邮件的引用替换为上面新增的SendGrid.SendVerificationEmail - 第四步:在Azure AD B2C的「身份体验框架」-「策略密钥」中新增密钥,名称设置为
B2C_1A_SendGridApiKey,值填入你的SendGrid API密钥,密钥类型选择「机密」 - 第五步:重新上传扩展策略、依赖方策略后测试即可解决原有的笼统报错问题
快速排查思路
如果配置后仍有报错,可开启自定义策略的应用洞察日志查看具体错误原因,常见问题为API密钥权限不足、发件人未完成SendGrid验证、模板ID填写错误三类。
内容的提问来源于stack exchange,提问作者rosidigital
相关产品推荐
相关产品推荐

