You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:27:02