我们有一个自定义的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
中指定自定义错误处理的建议,也没有找到我们可以采用的任何方法。
答案 0 :(得分:1)
总结:
您正在通过SAML颁发者使用本地帐户登录。这使登录过程发生在Azure AD B2C登录页面上。您看到的错误消息只是常规验证错误消息。这一切都发生在登录页面上,而不是错误页面上。错误内容仅在未处理的异常中断用户旅程的执行时由引擎使用。常规登录不是这种情况。
您用于自定义验证错误的选项仅限于在登录页面上使用纯CSS。
一个非常复杂的定制是demonstrated here
一般描述UI自定义的文档为here
使用自定义策略here
和UI自定义您将尽最大努力获得一些类似以下的错误消息: