【问题标题】:ActiveDirectoryClient 2.0 - Insufficient privileges to complete the operationActiveDirectoryClient 2.0 - 权限不足,无法完成操作
【发布时间】:2018-06-13 12:23:34
【问题描述】:

您好:我正在尝试将项目转换为使用较新的 ActiveDirectoryClient。我已经用 Graph 1 客户端和较旧的 Azure 门户做了几次,但我遇到了“权限不足”错误。

几个问题:

  1. 我进入并为我的应用程序授予“应用程序权限”,并且正在使用客户端 ID 和密码。我添加了 Microsoft Graph API、“读取所有用户的完整配置文件”和“读取目录数据”。我还添加了 Windows Azure Active Directory,“读取目录数据”。这些状态他们需要管理员同意“需要管理员”(但在门户中检查)。我的 API 调用需要一个客户端 ID,那么我该如何授予该同意?
  2. 我的连接和获取用户的代码如下。我注意到在 GetToken 方法中运行的代码在“return client.Users.Where(...”行之后运行,这让我担心获取用户的调用(引发异常的地方)是在没有有效的身份验证令牌。我认为 await 会处理这个问题。这似乎发生在 ADAL 库的版本 2 或 3 中。但是,所有示例似乎都使用类似的语法。有没有办法在查询以确保其设置正确?

谢谢!

public IUser FindUser(string username)
{
    var client = GetClient();
    if (client != null)
    {
        return client.Users.Where(x => x.UserPrincipalName == username).ExecuteSingleAsync().Result;
    }
    else
    {
        return null;
    }
}


private static ActiveDirectoryClient GetClient()
{
    try
    {
        Uri servicePointUri = new Uri(_graphName);
        Uri serviceRoot = new Uri(servicePointUri, _tenantName);

        var client = new ActiveDirectoryClient(serviceRoot, async () => { return await GetToken(servicePointUri); });

        return client;
    }

    catch (Exception ex) {
        return null;
    }

}

private static async Task<string> GetToken(Uri servicePointUri)
{
    var authenticationContext = new AuthenticationContext(_authString, false);
    var credentials = new ClientCredential(_clientId, _clientSecret);
    var result = authenticationContext.AcquireToken(servicePointUri.ToString(), credentials);
    return result.AccessToken;

}

【问题讨论】:

  • 在相关说明中,这里的演示控制台应用程序 - github.com/Azure-Samples/… 在我使用我的应用程序 ID、租户等时表现出相同的行为。

标签: c# microsoft-graph-api adal


【解决方案1】:

我建议您改用 Microsoft Graph。您可以在此处找到控制台应用程序(而不是 MVC ASP.Net Web 应用程序):https://github.com/microsoftgraph/console-csharp-snippets-sample

如果您坚持继续使用 Azure AD Graph,那么还有一个更合适的控制台应用示例。可以在这里找到:https://github.com/Azure-Samples/active-directory-dotnet-graphapi-console。但同样 - 我强烈建议改用 Microsoft Graph。

希望这会有所帮助,

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 2018-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多