繁体   English   中英

如何处理 B2C 自定义策略中的 REST API 错误?

[英]How to handle REST API error in a B2C custom policy?

问题描述

我想检查用户是否是我的 B2C 自定义策略中特定组的成员。

我尝试过的解决方案

我正在使用 MS Graph API 来检查这一点。 我尝试检查以下 API

GET https://graph.microsoft.com/v1.0/groups/{groupObjectId}/members/{userObjectId}

这适用于肯定的情况(当用户在组中时),但当用户不在组中时,它会返回404状态代码,这是无法使用自定义策略处理的。

POST https://graph.microsoft.com/v1.0/users/{userObjectId}/checkMemberObjects

{
    "ids": [
        "groupObjectId"
    ]
}

这个 API 在任何情况下都会返回200状态码,我可以处理响应,但是userObjectId是动态的,我必须将SendClaimsIn设置为Url以便我无法传递请求正文并发送POST请求。

我还尝试使用反向 API 检查相同的事情,其中groupObjectId将为 static 并且不会强迫我使用<Item Key="SendClaimsIn">Url</Item>

POST https://graph.microsoft.com/v1.0/groups/{groupObjectId}/checkMemberObjects

{
    "ids": [
        "userObjectId"
    ]
}

但这会返回400 Bad Request 并显示以下消息

{
    "error": {
        "code": "Request_BadRequest",
        "message": "The object class referenced by given parameters is not valid for member link.",
        "innerError": {
            "date": "2022-09-08T13:13:11",
            "request-id": "71ab6e9f-059f-4b9c-b40b-69671f7a3f31",
            "client-request-id": "71ab6e9f-059f-4b9c-b40b-69671f7a3f31"
        }
    }
}

问题

对以下任何问题的回答将被视为答案并受到赞赏。

  1. 有没有办法处理自定义策略中的404状态代码? 一个可能的问题在 2019 年得到了回答,也许现在有可能。)
  2. 如何使第三个 API 工作?
  3. 对于使用 B2C 自定义策略检查用户的组成员资格,您有什么建议?

附加信息

目前,我正在根据这个示例进行检查,但这是一个糟糕的解决方案,因为用户可以是许多组的成员(包括所需的组),但我们只检查前三个组。

您可以使用查询参数来自定义响应

GET https://graph.microsoft.com/v1.0/groups/{groupObjectId}/members$filter=id eq '{userObjectId}'

然后检查@odata.count等于 1,如果是,则具有该特定userObjectId的用户存在于该组中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM