Azure AD B2C自定义SendGrid OTP策略报错:otpToVerify未找到
Azure AD B2C OTP验证错误排查方案
错误核心原因
该错误表明VerifyOtp技术配置文件要求的otpToVerify声明未在策略流转中被正确生成或传递,属于声明依赖缺失问题。
具体排查步骤
检查OTP生成环节的声明输出
确认负责生成OTP的技术配置文件(通常为GenerateOtp)已在<OutputClaims>中输出otpToVerify声明:<TechnicalProfile Id="GenerateOtp"> <!-- 其他配置 --> <OutputClaims> <OutputClaim ClaimTypeReferenceId="otpToVerify" /> <!-- 其他输出声明 --> </OutputClaims> </TechnicalProfile>同时需保证
<ClaimsSchema>中存在该声明的定义:<ClaimsSchema> <ClaimType Id="otpToVerify"> <DisplayName>OTP Verification Code</DisplayName> <DataType>string</DataType> </ClaimType> <!-- 其他声明定义 --> </ClaimsSchema>验证声明流转的完整性
查看用户旅程(User Journey)的编排步骤,确认在调用VerifyOtp技术配置文件之前,已执行过GenerateOtp步骤,且该步骤未被配置为清除otpToVerify声明。例如,编排步骤中需确保GenerateOtp的执行顺序在VerifyOtp之前,且步骤的<ClaimsExchanges>正确关联。检查SendGrid配置对声明的影响
确认SendGrid的技术配置文件仅处理邮件发送相关声明(如收件邮箱、模板变量),未在<InputClaimsTransformations>或<OutputClaims>中修改/删除otpToVerify声明。SendGrid环节应仅负责将生成的OTP通过邮件发送,不能干扰OTP验证所需的声明留存。核对VerifyOtp的输入声明配置
检查VerifyOtp技术配置文件的<InputClaims>节点,确认对otpToVerify的引用无拼写错误,且标记为必填:<TechnicalProfile Id="VerifyOtp"> <!-- 其他配置 --> <InputClaims> <InputClaim ClaimTypeReferenceId="otpToVerify" Required="true" /> <!-- 其他输入声明 --> </InputClaims> </TechnicalProfile>
额外注意事项
- 声明ID区分大小写,所有涉及
otpToVerify的配置需保证拼写完全一致。 - 若使用自定义声明,需避免与内置声明ID冲突,且确保声明定义在策略的
<ClaimsSchema>中全局可见。
内容的提问来源于stack exchange,提问作者Quoter
相关产品推荐
相关产品推荐

