希望让 Azure B2C 自定义策略使用自定义错误页面(并传递一个值)
Looking to have Azure B2C custom policy use a custom error page (and pass a value)
更新:
我终于能够呈现我的自定义错误页面。我不得不使用
<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。 :(
signingerror?user=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>
原创:
我很为难。我一直在浏览 Whosebug 和互联网上的许多帖子。我希望你能帮助我。
我有一个自定义 B2C 策略,它基本上接受一个令牌,执行一些功能,然后 returns 最后一个访问令牌。那很好用。我的问题是我需要定义一个步骤,该步骤将根据先决条件触发技术配置文件。前提条件实际上适用于.
我缺少的是一种构建 technicalprofile/contentdefinition 以在另一个项目中加载我自己的错误页面(.Net Core 3 控制器)但完全可以访问的方法(Controllers/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 用于无效link,那么这有效。我尝试了各种自定义内容定义,类似于:
<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>
...signingerror 是我要访问的自定义错误页面。
如果我 运行 这样做,该策略将完全跳过该步骤。如果我使用无效的 link TP,那么它就可以工作。我也试图弄清楚如何将值传递给错误页面。伙计们,我很茫然。
如能提供任何帮助,我们将不胜感激。
您可以在 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>
更新:
我终于能够呈现我的自定义错误页面。我不得不使用
<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。 :( signingerror?user=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>
原创:
我很为难。我一直在浏览 Whosebug 和互联网上的许多帖子。我希望你能帮助我。
我有一个自定义 B2C 策略,它基本上接受一个令牌,执行一些功能,然后 returns 最后一个访问令牌。那很好用。我的问题是我需要定义一个步骤,该步骤将根据先决条件触发技术配置文件。前提条件实际上适用于.
我缺少的是一种构建 technicalprofile/contentdefinition 以在另一个项目中加载我自己的错误页面(.Net Core 3 控制器)但完全可以访问的方法(Controllers/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 用于无效link,那么这有效。我尝试了各种自定义内容定义,类似于:
<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>
...signingerror 是我要访问的自定义错误页面。 如果我 运行 这样做,该策略将完全跳过该步骤。如果我使用无效的 link TP,那么它就可以工作。我也试图弄清楚如何将值传递给错误页面。伙计们,我很茫然。
如能提供任何帮助,我们将不胜感激。
您可以在 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>