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 — 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, используя встроенную безопасность?


person Leon Bouquiet    schedule 26.02.2020    source источник


Ответы (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 и упрощает многие задачи автоматизации.

person Nicholas Blumhardt    schedule 27.02.2020