【问题标题】:Azure Active Directory B2C custom error page is ignoredAzure Active Directory B2C 自定义错误页面被忽略
【发布时间】:2018-12-07 20:30:10
【问题描述】:

我们有一个自定义的 Azure AD B2C 登录/注册策略(基于 SAML,默认策略不能满足我们的需要)。

我们可以通过如下内容定义自定义页面 UI:

<ContentDefinition Id="api.localaccountsignin">
  <LoadUri>https://example.com/SAMLSignIn.html</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:selfasserted:1.1.0</DataUri>
  <Metadata>
    <Item Key="DisplayName">Local account sign in page</Item>
  </Metadata>
</ContentDefinition>

但尝试自定义错误页面,通过:

<ContentDefinition Id="api.error">
  <LoadUri>https://example.com/SAMLErrorPage.html</LoadUri>
  <RecoveryUri>~/common/default_page_error.html</RecoveryUri>
  <DataUri>urn:com:microsoft:aad:b2c:elements:globalexception:1.1.0</DataUri>
  <Metadata>    
    <Item Key="DisplayName">Error page</Item>
  </Metadata>
</ContentDefinition>

没有任何改变。 SAMLSignIn.html 页面仍在使用中(尽管出现了任何登录错误的内容)。无论我们使用无效的用户名、错误的密码等进行测试,都会发生这种情况。

均匀设置

<Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item>

在关联的&lt;ValidationTechnicalProfile&gt; 中不会强制出错。

在 ApplicationInsights 中看到的用户旅程仅显示 Web.TPEngine.Providers.BadArgumentRetryNeededException;没有记录其他错误或异常。

我们如何在登录失败时使用自定义错误页面(无论出于何种原因)?

文档似乎暗示我们正在做正确的事情(How to Create a Custom Error Page in Azure AD B2C | Custom Policies 也是如此)。我找不到任何建议我们需要在 UserJourney 中指定自定义错误处理,也找不到任何我们可以这样做的方法。

【问题讨论】:

  • hm,刚刚玩了一个类似的案例。我显示了我的错误页面,但因为我在索赔中发现了我的错误行为。然后就比较容易了。发生错误时会发生什么 - 您在 B2C /authresp 上看到空白页面,或者您被重定向到您的应用程序,其中查询字符串指示错误?通常,如果您到达被重定向的那一点,则处理应用程序中的错误要容易得多。以及为什么您将api.localacocuntsignin 用于 SAML?!错误发生在哪个OrchestrationStep
  • 使用 localaccountsignin 是因为我们不希望通过 SAML 流进行注册。例如,如果我以未知用户身份登录时发生的错误(如预期的那样)。我们看到错误很好,但在登录页面的自定义 HTML 中,而不是错误页面 HTML。我相信这一切都发生在 CombinedSignInAndSignUp 步骤中;我们只是使用 localaccountsignin 内容定义。
  • 您是否只有一个为旅程注册的索赔提供者 - SAML 那个?如果是这样,您将被重定向到 SAML IdP 登录页面。接下来,您将使用 SAML 登录的结果登陆 B2C。如果您在 SAML IdP 输入错误密码,您将看到 SAML IdP 的错误页面,而不是 B2C 的错误页面。您似乎尝试在本地登录,而不是通过您的 SAML 提供商。这就是您只看到自定义登录页面的原因。我想知道您在登录页面看到什么错误?密码错误?那么这是本地的登录结果,预计会出现在那个页面上。
  • api.error 似乎仅用于未处理的错误。任何 IdP 错误(如未经同意)都会以将用户重定向到您的应用程序的方式处理,查询字符串形式为 error=server_error&amp;error_description=AADB2C%3a+An+exception+has+occurred.....
  • B2C SAML 提供者,也就是说,我们使用 B2C 登录到依赖方进行身份验证。 B2C 接管以显示登录页面。如果一切顺利,我们最终会返回第三方站点并登录。任何失败都会显示在 SAML Journey 登录页面的上下文中。

标签: azure-active-directory azure-ad-b2c


【解决方案1】:

总结一下:

您正在通过 SAML 颁发者使用本地帐户登录。这使得登录过程发生在 Azure AD B2C 登录页面上。您看到的错误消息只是常规验证错误消息。这一切都发生在登录页面上,而不是错误页面上。只有当未处理的异常中断用户旅程的执行时,引擎才会使用错误内容。这不是常规登录的情况。

您自定义验证错误的选项仅限于在登录页面上使用纯 CSS。

一个非常复杂的自定义是demonstrated here

描述UI定制的文档一般是here

以及使用自定义策略 here 进行 UI 自定义

尽你最大的努力,你会得到一些很好的错误消息,例如:

猜你喜欢
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2020-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多