Azure Active Directory B2C自定义错误页面被忽略

时间:2018-06-28 17:09:38

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

我们有一个自定义的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>
关联的<ValidationTechnicalProfile>中的

不会强制错误。

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

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

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

1 个答案:

答案 0 :(得分:1)

总结:

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

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

一个非常复杂的定制是demonstrated here

一般描述UI自定义的文档为here

使用自定义策略here

和UI自定义

您将尽最大努力获得一些类似以下的错误消息:

enter image description here