无法授权Azure LogAnalytics工作区

时间:2018-07-31 01:49:39

标签: c# azure azure-active-directory azure-application-insights azure-log-analytics

enter image description here我正在尝试连接到Azure门户中的工作区。我收到错误消息

  

操作返回无效的状态码“未经授权”。

creds对象已获取身份验证令牌,并且如本link

所述,我已向我的应用添加了资源权限
using System;
using Microsoft.Azure.OperationalInsights;
using Microsoft.Rest.Azure.Authentication;

namespace LogAnalytics
{
    class Program
    {
        static void Main(string[] args)
        {
            var workspaceId = "**myworkspaceId**";
            var clientId = "**myClientId**";

            var clientSecret = "**myClientSecret**";
            //<your AAD domain>
            var domain = "**myDomain**";
            var authEndpoint = "https://login.microsoftonline.com";
            var tokenAudience = "https://api.loganalytics.io/";

            var adSettings = new ActiveDirectoryServiceSettings
            {
                AuthenticationEndpoint = new Uri(authEndpoint),
                TokenAudience = new Uri(tokenAudience),
                ValidateAuthority = true
            };

            var creds = ApplicationTokenProvider.LoginSilentAsync(domain,clientId, clientSecret, 
                strong textadSettings).GetAwaiter().GetResult();            

            var client = new OperationalInsightsDataClient(creds);
            client.WorkspaceId = workspaceId;

            //Error happens below
            var results = client.Query("union * | take 5");

            Console.WriteLine(results);
            Console.ReadLine();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

  

操作返回无效的状态码“未经授权”。

根据错误消息和提供的代码,您需要在Azure AD中注册的应用程序中添加权限。

enter image description here

注意:如果要向应用程序添加权限,则需要成为管理员,然后可以使用ClientIdClientSecret获取身份验证令牌并读取日志分析。

但是,如果您不是管理员,则可以授予用户权限并使用用户名和密码访问Azure AD。

要获得用户的身份验证令牌,可以使用函数UserTokenProvider.LoginSilentAsync(nativeClientAppClientid, domainName, userName, password).GetAwaiter().GetResult()获取我们的凭据。