我正在尝试连接到 Azure 门户中的工作区。我收到的错误为
Operation returned an invalid status code 'Unauthorized'.
creds 对象已获取身份验证 token ,并且我已向我的应用程序添加了资源权限,如本 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();
}
}
}
最佳答案
Operation returned an invalid status code 'Unauthorized'.
根据错误消息和您提供的代码,您需要在Azure AD中注册的应用程序中添加权限。
注意:如果您想为应用程序添加权限您需要成为管理员,然后您可以使用ClientId
和ClientSecret
获取身份验证 token 并读取日志分析。
但是,如果您不是管理员,则可以向用户委派权限并使用用户名和密码访问 Azure AD。
要获取用户的身份验证 token ,您可以使用函数 UserTokenProvider.LoginSilentAsync(nativeClientAppClientid, domainName, userName, password).GetAwaiter().GetResult()
获取我们的凭据。
关于c# - 无法授权 Azure LogAnalytics 工作区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51604411/