2

如果没有在我的 Seq 实例上启用身份验证,我完全可以从 powershell 使用它,也就是说,以下只是有效的:

Invoke-RestMethod "https://myseqinstance/api/dashboards?shared"

但是,既然我已经启用了 Active Directory 身份验证并为自己添加了登录名,我仍然可以访问 Seq UI,但调用 API 失败。

Invoke-RestMethod "https://myseqinstance/api/dashboards?shared" -UseDefaultCredentials

现在这会产生 HTTP 401 - Unauthorized 错误。

我想我可能需要登录,所以我尝试了以下 HTTP GET 和 POST

# Produces HTTP 403
Invoke-RestMethod "https://myseqinstance/api/users/login" -UseDefaultCredentials
# Produces HTTP 400
Invoke-RestMethod -Method Post "https://myseqinstance/api/users/login" -UseDefaultCredentials

所以两者都不起作用,即使集成安全性应该是可能的......如何使用集成安全性对 Seq API 进行身份验证?

4

1 回答 1

1

这里的技巧是使用 API 密钥 - 您可以在 Seq UI 中通过单击您的用户名并选择“API 密钥”来执行此操作。

在命令行中,API 密钥令牌可以在标头中传递:

$headers = @{
    'X-Seq-ApiKey' = '<token>'
}
Invoke-RestMethod -Uri "https://myseqinstance/api/dashboards?shared" -Method Get -Headers $headers

如果您需要的命令在那里,使用seqcli命令行客户端通常更方便。如果没有,Seq.Api(C# 中的客户端库)涵盖了完整的 API,并使许多自动化任务更容易。

于 2020-02-27T06:52:21.743 回答