基于Azure B2C组的访问控制不显示userMessage

问题描述

我一直在为B2C租户实施基于组的访问控制。 我已经设置了一个API挂钩(POST),该挂钩接受用户的ObjectId,并通过Graph API验证用户是否在允许的组中,并返回:

  • 成功成功200次
  • 409未成功时发生冲突

下面是返回409的对象:

{
"version": "1.0.0","status": 409,"userMessage": "User is not authorized for this application"
}

由于某些原因,此消息不会显示用户,而是会重定向到 {{B2cUrl}} /#error = server_error&error_description = AADB2C%3a + User + is + not + author + for + this + application%0d%0aCorrelation + ID%3a + ... 8%0d%0aTimestamp%3a + ...% 3a03%3a39Z%0d%0a&state = ...

在我的用户旅程中,我加入了以下乐团

<orchestrationStep Order="3" Type="ClaimsExchange">
   <ClaimsExchanges>
      <ClaimsExchange Id="RESTValidateProfile" TechnicalProfileReferenceId="REST-ValidateProfile" />
   </ClaimsExchanges>
</orchestrationStep>

如何获取用户登录页面显示用户错误消息?

解决方法

您需要从验证技术资料中调用rest api技术资料。应当根据自我声明的技术配置文件(登录页面)配置验证技术配置文件,以便随后可以向其返回错误。

https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-rest-api-claims-validation#validate-the-user-input

以当前形式,在提交页面并开始重定向后,将调用REST API。因此,任何错误都将被发送回应用程序,因为当时没有页面呈现。