0

更新:我终于能够让我的自定义错误页面呈现。我不得不 <div id="api"></div> 在我看来使用。

我在这里的最后一个问题(这似乎是不可能的)是将我的一个声明的值(从我调用它时传递给我的 B2C 策略的 idToken)添加到我的 ContentDefintion 的 LoadUri 中。

这是我的技术资料:

<TechnicalProfile Id="SelfAsserted-SigningNotReadyError">
  <InputClaimsTransformations>
    <InputClaimsTransformation ReferenceId="GetUser" />
  </InputClaimsTransformations>
  <IncludeTechnicalProfile ReferenceId="SelfAsserted-UserError" />
</TechnicalProfile>

<TechnicalProfile Id="SelfAsserted-UserError">
  <DisplayName>Unsolicited error message</DisplayName>
  <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
  <Metadata>
    <Item Key="ContentDefinitionReferenceId">api.signingerrorlink</Item>
  </Metadata>
  <InputClaims>
    <InputClaim ClaimTypeReferenceId="errorMessage" />
  </InputClaims>
  <OutputClaims>
    <OutputClaim ClaimTypeReferenceId="errorMessage" />
  </OutputClaims>
</TechnicalProfile>

和我的 ContentDefinition 注意:看看我必须如何硬编码 GUID。:( 签名错误?用户=7ec00437-1ad9-4acc-a285-a729003ca99d

<ContentDefinition Id="api.signingerrorlink">
  <LoadUri>https://something.azurewebsites.net/signingerror?user=7ec00437-1ad9-4acc-a285-a729003ca99d</LoadUri>
  <RecoveryUri>https://something.azurewebsites.net/error</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.2.0</DataUri>
  <Metadata>
    <Item Key="DisplayName">Signing Not Ready</Item>
  </Metadata>
</ContentDefinition>

原来的:

我在这里泡菜。我一直在浏览stackoverflow和互联网上的许多帖子。我希望你能帮助我。

我有一个自定义 B2C 策略,它基本上接受一个令牌,执行一些功能,然后最后返回一个访问令牌。这很好用。我的问题是我需要定义一个步骤,该步骤将根据先决条件触发技术配置文件。前提条件实际上很好用。

我缺少的是一种构建技术配置文件/内容定义以在另一个项目中加载我自己的错误页面(.Net Core 3 控制器)但完全可访问(控制器/SigningErrorController)的方法。

我的步骤:

        <OrchestrationStep Order="7" Type="ClaimsExchange">
          <Preconditions>
            <Precondition Type="ClaimEquals" ExecuteActionsIf="true">
              <Value>isReadyForSigning</Value>
              <Value>True</Value>
              <Action>SkipThisOrchestrationStep</Action>
            </Precondition>
          </Preconditions>
          <ClaimsExchanges>
            <ClaimsExchange Id="SelfAsserted-SigningNotReady" TechnicalProfileReferenceId="SelfAsserted-SigningNotReadyError" />
          </ClaimsExchanges>
        </OrchestrationStep>

第2部分!我需要向这个自定义错误页面传递一个值。在这种情况下的指导。

如果我将 TP 用于无效链接,则此方法有效。我尝试了各种自定义内容定义,类似于:

      <ContentDefinition Id="api.signingerrorlink">
        <LoadUri>https://something.azurewebsites.net/error</LoadUri>
        <RecoveryUri>https://something.azurewebsites.net/signingerror</RecoveryUri>
        <DataUri>urn:com:microsoft:aad:b2c:elements:globalexception:1.1.0</DataUri>
        <Metadata>
          <Item Key="DisplayName">Error page</Item>
        </Metadata>
      </ContentDefinition>

...签名错误是我要访问的自定义错误页面。如果我运行它,策略会完全跳过这一步。如果我使用无效的链接 TP,那么它可以工作。我还试图弄清楚如何将值传递给错误页面。伙计们,我很茫然。

您可以提供的任何帮助将不胜感激。

4

1 回答 1

0

您可以在 LoadUri 元素中使用声明解析器。例如:

<ContentDefinition Id="api.signingerrorlink">
  <LoadUri>https://something.azurewebsites.net/signingerror?user={Claim:packageUserId}</LoadUri>
  <RecoveryUri>https://something.azurewebsites.net/error</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:contract:selfasserted:1.2.0</DataUri>
  <Metadata>
    <Item Key="DisplayName">Signing Not Ready</Item>
  </Metadata>
</ContentDefinition>

https://docs.microsoft.com/en-us/azure/active-directory-b2c/claim-resolver-overview#content-definition

于 2020-12-02T01:37:17.627 回答