Azure B2C自定义策略:JWT过期校验及用户提示方案问询
处理Azure B2C自定义策略中JWT令牌过期的提示方案
当你配置的id_token_hint令牌过期时,Azure B2C默认只会返回错误,不会主动引导用户。你可以通过以下几种方式实现友好的过期提示:
1. 直接在验证配置中添加自定义错误提示
在负责验证id_token_hint的技术配置文件里,添加错误处理规则,将令牌过期的错误映射为用户能看懂的提示:
<TechnicalProfile Id="IdTokenHint_Validate"> <DisplayName>ID Token Hint Validation</DisplayName> <Protocol Name="None" /> <Metadata> <Item Key="METADATA">https://你的租户域名.b2clogin.com/你的租户域名.onmicrosoft.com/v2.0/.well-known/openid-configuration</Item> <Item Key="validationMode">IssuerAndToken</Item> </Metadata> <CryptographicKeys> <Key Id="issuer_secret" StorageReferenceId="B2C_1A_IdTokenHintKey" /> </CryptographicKeys> <OutputClaims> <OutputClaim ClaimTypeReferenceId="issuerUserId" PartnerClaimType="sub" /> </OutputClaims> <ErrorHandling> <ErrorResponse> <ErrorCode>id_token_expired</ErrorCode> <UserMessage>你的身份令牌已过期,请重新生成新令牌后再继续注册。</UserMessage> </ErrorResponse> </ErrorHandling> </TechnicalProfile>
配置后,当令牌过期时,用户会直接看到这条自定义提示。
2. 配置自定义错误页面强化提示
如果需要更美观的提示页面,可在Azure B2C租户后台的用户体验 > 自定义页面中上传自定义错误页面HTML,根据错误代码id_token_expired渲染专属提示,比如添加按钮引导用户跳转回令牌生成流程。
3. 在用户旅程中添加分支判断
你还可以在用户旅程的编排步骤里加入判断逻辑,先检查令牌有效性,若过期则跳转到专门的提示步骤:
<OrchestrationStep Order="1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="ValidateIdToken" TechnicalProfileReferenceId="IdTokenHint_Validate" /> </ClaimsExchanges> <Preconditions> <Precondition Type="ClaimsExist" ExecuteActionsIf="false"> <Value>id_token_hint</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> </OrchestrationStep> <OrchestrationStep Order="2" Type="ClaimsExchange"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="false"> <Value>id_token_valid</Value> <Value>false</Value> <Action>SkipThisOrchestrationStep</Action> </Precondition> </Preconditions> <ClaimsExchanges> <ClaimsExchange Id="ShowExpiredPrompt" TechnicalProfileReferenceId="SelfAsserted-ExpiredTokenPrompt" /> </ClaimsExchanges> </OrchestrationStep>
对应的SelfAsserted-ExpiredTokenPrompt技术配置可以只展示提示文本,不要求用户输入,明确告知用户需要重新生成令牌。
注意事项
- 令牌过期的核心验证逻辑由Azure B2C自动完成,你只需要捕获错误并自定义提示内容即可。
- 确保提示信息清晰,让用户明确知道下一步需要做什么。
内容的提问来源于stack exchange,提问作者Anna Melashkina
相关产品推荐
相关产品推荐

