Azure B2C自定义策略:如何将invite_token传入REST API请求体
解决inviteToken无法传入REST API请求体的配置方案
问题根源
你当前的配置中,LocalAccountSignUpWithLogonEmail技术配置的DisplayClaims里包含了inviteToken,这会导致页面渲染出inviteToken的输入框。若用户未在该输入框中填写内容(或清空),SelfAsserted属性提供器会将inviteToken声明的值覆盖为空,从而导致后续REST API调用时无法传递该参数。
修改步骤
1. 更新ClaimType定义(添加只读属性)
在你的ClaimType配置中,为inviteToken添加只读输入类型,确保该值无法被用户修改:
<ClaimType Id="inviteToken"> <DataType>string</DataType> <UserInputType>Readonly</UserInputType> </ClaimType>
2. 移除注册页面的inviteToken显示控件
修改LocalAccountSignUpWithLogonEmail的DisplayClaims,删除inviteToken对应的DisplayClaim项,避免页面渲染输入框导致值被覆盖:
<DisplayClaims> <!-- <DisplayClaim DisplayControlReferenceId="emailVerificationControl" /> --> <DisplayClaim ClaimTypeReferenceId="email" Required="true" /> <DisplayClaim ClaimTypeReferenceId="newPassword" Required="true" /> <DisplayClaim ClaimTypeReferenceId="reenterPassword" Required="true" /> <!-- Optional claims, to be collected from the user --> <DisplayClaim ClaimTypeReferenceId="displayName" /> <DisplayClaim ClaimTypeReferenceId="givenName" /> <DisplayClaim ClaimTypeReferenceId="surName" /> <!-- 移除此行:<DisplayClaim ClaimTypeReferenceId="inviteToken" /> --> </DisplayClaims>
3. 保留必要的声明传递配置
确认以下配置已正确设置:
LocalAccountSignUpWithLogonEmail的InputClaims中,inviteToken的默认值配置正确:<InputClaim ClaimTypeReferenceId="inviteToken" DefaultValue="{OAUTH-KV:invite_token}" AlwaysUseDefaultValue="true" />LocalAccountSignUpWithLogonEmail的OutputClaims中保留inviteToken,确保声明能传递到后续验证流程:<OutputClaim ClaimTypeReferenceId="inviteToken" />REST-API-SIGNUP-VALIDATION的InputClaims中正确映射inviteToken:<InputClaim ClaimTypeReferenceId="inviteToken" PartnerClaimType="inviteToken" />
完成以上修改后,inviteToken会从URL查询参数中正确读取,并传递到REST API的POST请求体中。
内容的提问来源于stack exchange,提问作者Smith Dwayne
相关产品推荐
相关产品推荐

