feat(inputs.http_response): Add cookie authentication (#15110)
This commit is contained in:
parent
e2aa248242
commit
43687b4e23
|
|
@ -106,6 +106,15 @@ to use them.
|
||||||
|
|
||||||
## Interface to use when dialing an address
|
## Interface to use when dialing an address
|
||||||
# interface = "eth0"
|
# interface = "eth0"
|
||||||
|
|
||||||
|
## Optional Cookie authentication
|
||||||
|
# cookie_auth_url = "https://localhost/authMe"
|
||||||
|
# cookie_auth_method = "POST"
|
||||||
|
# cookie_auth_username = "username"
|
||||||
|
# cookie_auth_password = "pa$$word"
|
||||||
|
# cookie_auth_body = '{"username": "user", "password": "pa$$word", "authenticate": "me"}'
|
||||||
|
## cookie_auth_renewal not set or set to "0" will auth once and never renew the cookie
|
||||||
|
# cookie_auth_renewal = "5m"
|
||||||
```
|
```
|
||||||
|
|
||||||
## Metrics
|
## Metrics
|
||||||
|
|
@ -150,3 +159,14 @@ a successful connection.
|
||||||
```text
|
```text
|
||||||
http_response,method=GET,result=success,server=http://github.com,status_code=200 content_length=87878i,http_response_code=200i,response_time=0.937655534,result_code=0i,result_type="success" 1565839598000000000
|
http_response,method=GET,result=success,server=http://github.com,status_code=200 content_length=87878i,http_response_code=200i,response_time=0.937655534,result_code=0i,result_type="success" 1565839598000000000
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Optional Cookie Authentication Settings
|
||||||
|
|
||||||
|
The optional Cookie Authentication Settings will retrieve a cookie from the
|
||||||
|
given authorization endpoint, and use it in subsequent API requests. This is
|
||||||
|
useful for services that do not provide OAuth or Basic Auth authentication,
|
||||||
|
e.g. the [Tesla Powerwall API][tesla], which uses a Cookie Auth Body to retrieve
|
||||||
|
an authorization cookie. The Cookie Auth Renewal interval will renew the
|
||||||
|
authorization by retrieving a new cookie at the given interval.
|
||||||
|
|
||||||
|
[tesla]: https://www.tesla.com/support/energy/powerwall/own/monitoring-from-home-network
|
||||||
|
|
|
||||||
|
|
@ -16,9 +16,11 @@ import (
|
||||||
"time"
|
"time"
|
||||||
"unicode/utf8"
|
"unicode/utf8"
|
||||||
|
|
||||||
|
"github.com/benbjohnson/clock"
|
||||||
"github.com/influxdata/telegraf"
|
"github.com/influxdata/telegraf"
|
||||||
"github.com/influxdata/telegraf/config"
|
"github.com/influxdata/telegraf/config"
|
||||||
"github.com/influxdata/telegraf/internal"
|
"github.com/influxdata/telegraf/internal"
|
||||||
|
"github.com/influxdata/telegraf/plugins/common/cookie"
|
||||||
"github.com/influxdata/telegraf/plugins/common/tls"
|
"github.com/influxdata/telegraf/plugins/common/tls"
|
||||||
"github.com/influxdata/telegraf/plugins/inputs"
|
"github.com/influxdata/telegraf/plugins/inputs"
|
||||||
)
|
)
|
||||||
|
|
@ -55,6 +57,7 @@ type HTTPResponse struct {
|
||||||
Username config.Secret `toml:"username"`
|
Username config.Secret `toml:"username"`
|
||||||
Password config.Secret `toml:"password"`
|
Password config.Secret `toml:"password"`
|
||||||
tls.ClientConfig
|
tls.ClientConfig
|
||||||
|
cookie.CookieAuthConfig
|
||||||
|
|
||||||
Log telegraf.Logger
|
Log telegraf.Logger
|
||||||
|
|
||||||
|
|
@ -114,6 +117,13 @@ func (h *HTTPResponse) createHTTPClient() (*http.Client, error) {
|
||||||
return http.ErrUseLastResponse
|
return http.ErrUseLastResponse
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if h.CookieAuthConfig.URL != "" {
|
||||||
|
if err := h.CookieAuthConfig.Start(client, h.Log, clock.New()); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return client, nil
|
return client, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -81,3 +81,12 @@
|
||||||
|
|
||||||
## Interface to use when dialing an address
|
## Interface to use when dialing an address
|
||||||
# interface = "eth0"
|
# interface = "eth0"
|
||||||
|
|
||||||
|
## Optional Cookie authentication
|
||||||
|
# cookie_auth_url = "https://localhost/authMe"
|
||||||
|
# cookie_auth_method = "POST"
|
||||||
|
# cookie_auth_username = "username"
|
||||||
|
# cookie_auth_password = "pa$$word"
|
||||||
|
# cookie_auth_body = '{"username": "user", "password": "pa$$word", "authenticate": "me"}'
|
||||||
|
## cookie_auth_renewal not set or set to "0" will auth once and never renew the cookie
|
||||||
|
# cookie_auth_renewal = "5m"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue