Seq API: аутентификация с использованием встроенной безопасности?
Без включения аутентификации на моем экземпляре Seq я могу работать с ним из PowerShell, то есть работает следующее:
Invoke-RestMethod "https://myseqinstance/api/dashboards?shared"
Однако теперь, когда я включил аутентификацию Active Directory и добавил для себя логин, я все еще могу получить доступ к пользовательскому интерфейсу Seq, но вызвать API не удается.
Invoke-RestMethod "https://myseqinstance/api/dashboards?shared" -UseDefaultCredentials
Теперь это вызывает ошибку HTTP 401 - Несанкционированный доступ.
Я подумал, что мне может потребоваться войти в систему, поэтому я попробовал 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, используя интегрированную безопасность?
1 ответ
Уловка здесь заключается в использовании ключа API - вы можете сделать это в пользовательском интерфейсе Seq, щелкнув свое имя пользователя и выбрав "Ключи API".
В командной строке токен ключа API можно передать в заголовке:
$headers = @{
'X-Seq-ApiKey' = '<token>'
}
Invoke-RestMethod -Uri "https://myseqinstance/api/dashboards?shared" -Method Get -Headers $headers
Обычно гораздо удобнее использовать seqcli
клиент командной строки, если там есть нужные вам команды. В противном случае Seq.Api (клиентская библиотека на C#) охватывает весь API и упрощает многие задачи автоматизации.