需要来自 Azure AD B2C 中依赖方的 JWT 的输入声明

Require Input Claims From JWT From RelyingParty in Azure AD B2C

我是 sending hidden claims to B2C via a JWT following the WingTig Games demo code。我如何要求依赖方发送索赔?如果他们没有发送,阻止注册过程?并向用户提供我自己的错误信息?这些字段将对用户隐藏。

我尝试在 RelyingParty 节点的叶策略中添加 required,但它让我通过了。我尝试将 required 添加到我的 TechnicalProfile 节点,但它让我通过了。

<InputClaims>
    <InputClaim ClaimTypeReferenceId="extension_my_claim" Required="true"/>
</InputClaims>

作为解决方法,您可以在步骤 1 和 2 中添加前提条件,然后在您的客户错误页面中添加额外的步骤。

在下面的 XML 代码段中,我添加了先决条件,即 运行 仅当您的声明存在时才执行步骤 1 和 2,否则跳至下一步。 9月3日,前置条件是运行只有声明不存在,才显示自定义页面。这只是一个示例,在您的情况下,您可以添加自己的错误页面。

<OrchestrationStep Order="1" Type="CombinedSignInAndSignUp" ContentDefinitionReferenceId="api.signuporsignin">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
      <Value>{your claim name}</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
  <ClaimsProviderSelections>
    <ClaimsProviderSelection TargetClaimsExchangeId="FacebookExchange" />
    <ClaimsProviderSelection ValidationClaimsExchangeId="LocalAccountSigninEmailExchange" />
  </ClaimsProviderSelections>
  <ClaimsExchanges>
    <ClaimsExchange Id="LocalAccountSigninEmailExchange" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" />
  </ClaimsExchanges>
</OrchestrationStep>
<!-- Check if the user has selected to sign in using one of the social providers -->
<OrchestrationStep Order="2" Type="ClaimsExchange">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
      <Value>{your claim name}</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>

  <Precondition Type="ClaimsExist" ExecuteActionsIf="false">
    <Value>registrationSource</Value>
    <Action>SkipThisOrchestrationStep</Action>
  </Precondition>

  </Preconditions>
  <ClaimsExchanges>
    <ClaimsExchange Id="FacebookExchange" TechnicalProfileReferenceId="Facebook-OAUTH" />
    <ClaimsExchange Id="SignUpWithLogonEmailExchange" TechnicalProfileReferenceId="LocalAccountSignUpWithLogonEmail" />
  </ClaimsExchanges>
</OrchestrationStep>

<!-- Error message-->
<OrchestrationStep Order="3" Type="ReviewScreen" ContentDefinitionReferenceId="api.selfasserted">
  <Preconditions>
    <Precondition Type="ClaimsExist" ExecuteActionsIf="true">
      <Value>registrationSource</Value>
      <Action>SkipThisOrchestrationStep</Action>
    </Precondition>
  </Preconditions>
</OrchestrationStep>


<!-- Rest of the UserJourney -->
</OrchestrationSteps>
</UserJourney> 

找到 <ContentDefinitions> 元素,并添加以下 XML

<ContentDefinition Id=" api.inputtoken.error ">
   <LoadUri>~/tenant/default/selfAsserted.cshtml</LoadUri>
   <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
   <DataUri>urn:com:microsoft:aad:b2c:elements:selfasserted:1.1.0</DataUri>
   <Metadata>
       <Item Key="DisplayName">Collect information from user page</Item>
   </Metadata>
</ContentDefinition>

更改 LoadUri 值以指向您的 HTML 错误页面