0

根据文档,我们可以使用以下端点来获取敏感度标签:

  • /me/informationProtection/policy/labels(使用委派权限)

  • /informationProtection/policy/labels(使用应用程序权限。应用程序应具有使用此端点的 InformationProtectionPolicy.Read.All 权限)

以下 C# 代码使用应用程序权限,它适用于租户 1:

static void Main(string[] args)
{
    string accessToken = getTokenImpl().Result;
    using (var client = new HttpClient())
    {
        client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken);
        client.DefaultRequestHeaders.Add("Accept", "application/json");
        client.DefaultRequestHeaders.Add("User-Agent", "PostmanRuntime/7.24.1");
        using (var response = client.GetAsync($"https://graph.microsoft.com/beta/informationprotection/policy/labels").Result)
        {
            using (var content = response.Content)
            {
                string result = content.ReadAsStringAsync().Result;
                if (response.IsSuccessStatusCode)
                {
                    Console.WriteLine(result);
                }
            }
        }
    }
}

private static async Task<string> getTokenImpl()
{
    string clientId = "...";
    string clientSecret = "...";
    string tenant = "{...}.onmicrosoft.com";

    string authority = string.Format("https://login.microsoftonline.com/{0}", tenant);
    var authContext = new AuthenticationContext(authority);
    var creds = new ClientCredential(clientId, clientSecret);
    var authResult = await authContext.AcquireTokenAsync("https://graph.microsoft.com/", creds);
    return authResult.AccessToken;
}

但它在另一个租户 2 上不起作用 - 它总是返回 404“找不到资源”,并出现以下内部异常“用户未找到标签,策略为空”。以下是完整回复:

    {
        "error": {
            "code": "itemNotFound",
            "message": "The resource could not be found.",
            "innerError": {
                "code": "notFound",
                "message": "User not found to have labels, policy is empty",
                "target": "userId",
                "exception": null,
                "date": "2020-11-18T09:29:20",
                "request-id": "657ad51c-9cab-49f2-a242-50929cdc6950",
                "client-request-id": "657ad51c-9cab-49f2-a242-50929cdc6950"
            }
        }
    }

有趣的是,尝试在同一租户 2 上使用委派权限调用端点 /me/informationProtection/policy/labels 会产生相同的错误,但在租户 1 上它也可以工作。有没有人遇到过这个问题或知道它为什么会发生?需要提到的是,在之前的tenant2 上,我们为特定用户创建并发布了几个敏感度标签——该用户既没有 O365 许可证也没有 Azure 订阅。即,当您尝试登录 SPO/Azure 并创建站点/组时 - 该用户根本没有显示敏感度标签。我们尝试删除这些敏感度标签及其针对此用户的受众群体定位政策,但两个端点仍然返回错误。

PS。AAD 应用程序在租户 2 上正常 - 它具有 InformationProtectionPolicy.Read.All 权限和管理员同意: 应用权限

2020-11-25 更新:两个租户的行为都发生了变化,我们这边没有任何改变:现在在两个租户上,我们都得到 502 Bad Gateway。MS 现在是否在全球范围内推出此功能?这是我们现在从 /beta/me/informationProtection/policy/labels 得到的响应:

{
   "error":{
      "code":"UnknownError",
      "message":"<html>\r\n<head><title>502 Bad Gateway</title></head>\r\n<body>\r\n<center><h1>502 Bad Gateway</h1></center>\r\n<hr><center>Microsoft-Azure-Application-Gateway/v2</center>\r\n</body>\r\n</html>\r\n",
      "innerError":{
         "date":"2020-11-25T12:59:51",
         "request-id":"93557ae1-b0d9-44a9-bbea-871f18e379ea",
         "client-request-id":"93557ae1-b0d9-44a9-bbea-871f18e379ea"
      }
   }
}

2020-12-07 更新:它开始自行工作。即,当重现此问题时,MS 已在后端以某种方式为租户修复了该问题。

4

0 回答 0