操作返回无效的状态码“未经授权”。
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();
}
}
}
答案 0 :(得分:1)
操作返回无效的状态码“未经授权”。
根据错误消息和提供的代码,您需要在Azure AD中注册的应用程序中添加权限。
注意:如果要向应用程序添加权限,则需要成为管理员,然后可以使用ClientId
和ClientSecret
获取身份验证令牌并读取日志分析。
但是,如果您不是管理员,则可以授予用户权限并使用用户名和密码访问Azure AD。
要获得用户的身份验证令牌,可以使用函数UserTokenProvider.LoginSilentAsync(nativeClientAppClientid, domainName, userName, password).GetAwaiter().GetResult()
获取我们的凭据。