如何在 Azure Log Analytics 中配置基本日志 - 如何获取不记名令牌?
How to configure Basic Logs in Azure Log Analytics - how to get bearer token?
我有 Azure Log Analytics 和 Azure Application Insights。我想将我的 Log Analytics 中的某些表设置为“基本日志”,因为这样更便宜。首先,我只想检查这些表的设置。
我正在尝试关注这篇文章:https://docs.microsoft.com/en-us/azure/azure-monitor/logs/basic-logs-configure?tabs=api-2
文章告诉我通过关注另一篇文章获得不记名令牌:https://social.technet.microsoft.com/wiki/contents/articles/51140.azure-rest-management-api-the-quickest-way-to-get-your-bearer-token.aspx
我使用开发人员工具从 Azure 门户中提取了不记名令牌。它看起来像这样(几百个字符长):Bearer ey...A
.
然后我尝试在 PowerShell 中执行此操作:
$BearerToken = "Bearer ey...A"
$uri = "https://management.azure.com/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName>/tables/<tableName>?api-version=2021-12-01-preview"
Invoke-WebRequest $uri -Headers @{Authorization = $BearerToken}
这给了我:
{"error":{"code":"InvalidAuthenticationToken","message":"The access token is invalid."}}
在我的 PowerShell session 中,我以与门户中相同的用户身份登录(使用 az login
)。
可能是供股?我对 Log Analytics 工作区具有“所有者”和“贡献者”访问权限。
我需要做什么才能通过认证?我的 Invoke-WebRequest
电话还需要 headers 或选项吗?
问题可能是因为令牌的受众未设置为 management.azure.com
,即您想要访问的资源。
如果你尝试这个命令:
az account get-access-token --resource=https://management.azure.com --query accessToken --output tsv
您最终会得到一个如下所示的令牌:
{
"aud": "https://management.azure.com",
"iss": "https://sts.windows.net/[guid]/",
"iat": 1646746056,
"nbf": 1646746056,
"exp": 1646750582,
"acr": "1",
"aio":
您可以将完整的token复制到jwt。io/jwt.ms查看所有claims的值。
此令牌用于管理 API,因此可能会起作用。
我发现我做错了什么。我正在从 Firefox 的开发人员工具复制令牌,但显示的令牌被中间的 …
字符截断了。那只是很难发现。
完整的令牌应该有 5000 个字符长。
在Firefox中,在Request Headers显示的地方,select Raw 然后right-click, select all and copy。这为您提供了完整的值。
或者使用 Jan_V 在他的回答中建议的命令:
az account get-access-token --resource=https://management.azure.com --query accessToken --output tsv
我有 Azure Log Analytics 和 Azure Application Insights。我想将我的 Log Analytics 中的某些表设置为“基本日志”,因为这样更便宜。首先,我只想检查这些表的设置。
我正在尝试关注这篇文章:https://docs.microsoft.com/en-us/azure/azure-monitor/logs/basic-logs-configure?tabs=api-2
文章告诉我通过关注另一篇文章获得不记名令牌:https://social.technet.microsoft.com/wiki/contents/articles/51140.azure-rest-management-api-the-quickest-way-to-get-your-bearer-token.aspx
我使用开发人员工具从 Azure 门户中提取了不记名令牌。它看起来像这样(几百个字符长):Bearer ey...A
.
然后我尝试在 PowerShell 中执行此操作:
$BearerToken = "Bearer ey...A"
$uri = "https://management.azure.com/subscriptions/<subscriptionId>/resourcegroups/<resourceGroupName>/providers/Microsoft.OperationalInsights/workspaces/<workspaceName>/tables/<tableName>?api-version=2021-12-01-preview"
Invoke-WebRequest $uri -Headers @{Authorization = $BearerToken}
这给了我:
{"error":{"code":"InvalidAuthenticationToken","message":"The access token is invalid."}}
在我的 PowerShell session 中,我以与门户中相同的用户身份登录(使用 az login
)。
可能是供股?我对 Log Analytics 工作区具有“所有者”和“贡献者”访问权限。
我需要做什么才能通过认证?我的 Invoke-WebRequest
电话还需要 headers 或选项吗?
问题可能是因为令牌的受众未设置为 management.azure.com
,即您想要访问的资源。
如果你尝试这个命令:
az account get-access-token --resource=https://management.azure.com --query accessToken --output tsv
您最终会得到一个如下所示的令牌:
{
"aud": "https://management.azure.com",
"iss": "https://sts.windows.net/[guid]/",
"iat": 1646746056,
"nbf": 1646746056,
"exp": 1646750582,
"acr": "1",
"aio":
您可以将完整的token复制到jwt。io/jwt.ms查看所有claims的值。
此令牌用于管理 API,因此可能会起作用。
我发现我做错了什么。我正在从 Firefox 的开发人员工具复制令牌,但显示的令牌被中间的 …
字符截断了。那只是很难发现。
完整的令牌应该有 5000 个字符长。
在Firefox中,在Request Headers显示的地方,select Raw 然后right-click, select all and copy。这为您提供了完整的值。
或者使用 Jan_V 在他的回答中建议的命令:
az account get-access-token --resource=https://management.azure.com --query accessToken --output tsv