[英]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.