Azure AD B2C自定义策略上传及GenerateOtp配置错误排查
identifier声明的问题 以下是针对报错的具体排查和修复步骤:
检查ClaimsSchema中是否定义了
identifier声明
打开你的扩展策略XML,确认<ClaimsSchema>节点下存在identifier的声明。如果没有,添加以下代码:<ClaimType Id="identifier"> <DisplayName>Identifier</DisplayName> <DataType>string</DataType> </ClaimType>这个声明是GenerateOtp技术配置文件能够识别该claim的前提。
验证GenerateOtp技术配置文件的InputClaims映射
找到<TechnicalProfile Id="GenerateOtp">节点,检查其<InputClaims>配置是否正确映射了identifier:<InputClaims> <InputClaim ClaimTypeReferenceId="identifier" PartnerClaimType="identifier" /> </InputClaims>确保
ClaimTypeReferenceId指向的是你在ClaimsSchema中定义的claim ID,PartnerClaimType必须和报错中提到的identifier完全一致。如果你的实际标识符是邮箱或手机号,也可以直接映射现有claim,比如:<InputClaims> <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="identifier" /> </InputClaims>确认
identifier在调用GenerateOtp前已被赋值
查看用户旅程(<UserJourney>)中的编排步骤,确保在执行GenerateOtp技术配置文件的步骤之前,已经通过收集用户信息、读取目录数据等方式为identifier赋值。例如,如果是通过邮箱生成OTP,需要先有收集用户邮箱的步骤,确保email(或identifier)claim存在有效值。检查策略继承与冲突
如果你使用的是扩展策略,确认<BasePolicy>指向的父策略没有覆盖identifier的定义,且父策略的ClaimsSchema中包含必要的声明。避免父策略和扩展策略中出现同名claim的冲突配置。验证Signin策略的用户旅程配置
打开B2C_1A_DisplayControl_sendgrid_Signin策略,找到对应的用户旅程,检查调用GenerateOtp的步骤顺序,确保identifier在调用前已经被正确生成或传递到该步骤中。
内容的提问来源于stack exchange,提问作者Quoter

