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

Другие вопросы по тегам