Azure ad b2c 自定义连接器“ShowBlockPage”响应不起作用

Bhu*_*han 3 azure-ad-b2c

我按照此处的文档返回阻止响应https://learn.microsoft.com/en-us/azure/active-directory-b2c/add-api-connector?pivots=b2c-user-flow#example-of -a-blocking-response从 api 连接器到 azure ad b2c,但是即使在构建了文档中所示的正确响应之后,我仍然无法显示 b2c 用户流的阻止页面。

请注意,此连接器在登录时被调用。

我已经验证 api 的响应似乎是正确的,如下所示

{
    "version": "1.0.0",
    "action": "ShowBlockPage",
    "userMessage": "You must have a local account registered for Contoso."
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我们希望看到如下所示的阻塞页面(来自文档的屏幕截图),但 b2c 不会显示它并直接进入连接的应用程序。

在此输入图像描述

我错过了什么?任何指示将不胜感激。TIA。
这是我的 api 连接器的代码

public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
{
    log.LogInformation("C# HTTP trigger function processed a request.");

    // Get the request body
    string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
    dynamic data = JsonConvert.DeserializeObject(requestBody);
    
    // If input data is null, show block page
    if (data == null)
    {
        return (ActionResult)new OkObjectResult(new ResponseContent("ShowBlockPage", "There was a problem with your request."));
    }

    // Print out the request body
    log.LogInformation("Request body: " + requestBody);
    
    // check for issuer
    if(data.identities != null)
    {
        string issuer = data.identities[0].issuer;
        log.LogInformation("issuer detected: " + issuer);
        if(issuer == "github.com")
        {
            log.LogInformation("Returning an error!");
            //return (ActionResult)new BadRequestObjectResult(new ResponseContent("ValidationError", "Please provide a Display Name with at least five characters."));
            return (ActionResult)new OkObjectResult(new ResponseContent("ShowBlockPage", "You must have a local account registered for Contoso."));
        }
    }

    // Validation passed successfully, return `Allow` response.
    return (ActionResult)new OkObjectResult(new ResponseContent() 
    { 
        jobTitle = "This value return by the API Connector"//,
        // You can also return custom claims using extension properties.
        //extension_CustomClaim = "my custom claim response"
    });
}
Run Code Online (Sandbox Code Playgroud)

这是 ResponseContent 类

public class ResponseContent
{
    public const string ApiVersion = "1.0.0";

    public ResponseContent()
    {
        this.version = ResponseContent.ApiVersion;
        this.action = "Continue";
    }

    public ResponseContent(string action, string userMessage)
    {
        this.version = ResponseContent.ApiVersion;
        this.action = action;
        this.userMessage = userMessage;
        if (action == "ValidationError")
        {
            this.status = "400";
        }
    }

    public string version { get; }
    public string action { get; set; }


    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string userMessage { get; set; }


    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string status { get; set; }


    [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
    public string jobTitle { get; set; }

}
Run Code Online (Sandbox Code Playgroud)

Bhu*_*han 5

我们最终为此创建了 Microsoft 支持票证,并得到回复称这是设计使然。ShowBlockPage 响应仅适用于注册用户流,不适用于登录用户流。