簡體   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