[英]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"
}
}
}
对以下任何问题的回答将被视为答案并受到赞赏。
404
状态代码? ( 一个可能的问题在 2019 年得到了回答,也许现在有可能。)目前,我正在根据这个示例进行检查,但这是一个糟糕的解决方案,因为用户可以是许多组的成员(包括所需的组),但我们只检查前三个组。
您可以使用查询参数来自定义响应。
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.