azure - 使用客户端凭据身份验证通过 Graph API 创建自定义扩展

标签 azure active-directory microsoft-graph-api azure-ad-graph-api

我有一个 .NET Web API,用于与 Microsoft Graph 和 Azure AD 进行一些交互。但是,当我尝试为用户创建扩展时,它会返回“访问被拒绝”。

我从文档 here 中知道这是可能的但是,它似乎对我不起作用。

对于 API,我使用客户端凭据。因此,我的 Web 应用程序使用用户凭据向 API 进行身份验证,然后使用客户端从 API 向图表进行身份验证。

我在 Azure AD 上的应用程序将应用程序权限读取和写入目录数据设置为 true,因为它声明它需要位于用户扩展的文档中。

我知道我的 token 是有效的,因为我可以用它检索数据。

这是我检索它的代码:

    private const string _createApprovalUrl = "https://graph.microsoft.com/beta/users/{0}/extensions";
    public static async Task<bool> CreateApprovalSystemSchema(string userId)
    {
        using(var client = new HttpClient())
        {
            using(var req = new HttpRequestMessage(HttpMethod.Post, _createApprovalUrl))
            {
                var token = await GetToken();
                req.Headers.Add("Authorization", string.Format("Bearer {0}", token));
                req.Headers.TryAddWithoutValidation("Content-Type", "application/json");
                var requestContent = JsonConvert.SerializeObject(new { extensionName = "<name>", id = "<id>", approvalLimit = "0" });
                req.Content = new StringContent(requestContent, Encoding.UTF8, "application/json");

                using(var response = await client.SendAsync(req))
                {
                    var content = await response.Content.ReadAsStringAsync();
                    ApprovalSystemSchema schema = JsonConvert.DeserializeObject<ApprovalSystemSchema>(content);
                    if(schema.Id == null)
                    {
                        return false;
                    }
                    return true;
                }
            }
        }
    }

是否有人可以解决此问题,或者提供有关何时可以做到这一点的信息?

谢谢

最佳答案

我们查看了一下,您似乎缺少一个错误/代码行。您似乎提出了这个确切请求:

POST https://graph.microsoft.com/beta/users/{0}/extensions

您似乎缺少将 {0} 替换为实际用户 ID 的代码。请进行修复并告知我们您现在是否可以为用户创建扩展程序。

关于azure - 使用客户端凭据身份验证通过 Graph API 创建自定义扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42722305/

相关文章:

azure-active-directory - MS Graph,守护程序app 401在Files.ReadWrite.All上未经授权

c# - 读取作为 blob 上传的 azure 中的 excelsheet

security - 对于拥有大量 SAP 投资的公司,内部安全标准的最佳实践是什么?

office365 - 文件附件在 Microsoft Graph API 中显示为消息实体

Powershell:Where-Object 通配符

java - 从 Active Directory 中的组中删除用户

c# - 访问 token 验证失败 Microsoft Graph API

azure - Azure 数据科学 VM 上的 CNTK

mysql - Azure 数据工厂 - 连接到本地 Mysql,Linux 上的 protected 服务

azure - 是否可以使用 az cli 列出所有类型的应用服务