...
Note: If we are using a measurement with special characters like SubNetwork=CountryNN,MeContext=MEC-Gbg-1,ManagedElement=RNC-Gbg-1ManagedElement=RNC-Gbg-1,ENodeBFunction=1 we need to surrounds the measurement name in quotes : "q=SELECT * FROM \"SubNetwork=CountryNN,MeContext=MEC-Gbg-1,ManagedElement=RNC-Gbg-1ManagedElement=RNC-Gbg-1,ENodeBFunction=1\""
JWT Authorization in Influxdb V1
If we include the following environment variables in our influxdb (v1) docker container we can enable authorization and use JWTs to retrieve data:
INFLUXDB_HTTP_SHARED_SECRET: "my super secret pass phrase"
INFLUXDB_ADMIN_USER: influxadmin
INFLUXDB_ADMIN_PASSWORD: influxadmin
INFLUXDB_HTTP_AUTH_ENABLED: "true"
The following python program shows this in action:
Code Block | ||||
---|---|---|---|---|
| ||||
import requests
import jwt
from datetime import datetime, timedelta, timezone
def get_jwt(username, secret, algorithm):
payload_data = {
"username": username,
"exp": datetime.now(tz=timezone.utc) + timedelta(minutes=15)
}
encoded = jwt.encode(
payload=payload_data,
key=secret,
algorithm=algorithm
)
return encoded
url = "http://localhost:8085/query"
username = "influxadmin"
secret = 'my super secret pass phrase'
algorithm="HS256"
jwt = get_jwt(username, secret, algorithm)
headers = { "Authorization": "Bearer "+jwt.decode('utf-8') }
querystring = {"pretty": "true", "db": "ts_pms_metrics",
"q": "SELECT \"eventName\", \"domain\", \"sourceName\", \"measuredEntityUserName\", \"startEpochMicrosec\", \"startEpochDate\", \"lastEpochMicrosec\", \"lastEpochDate\", \"measuredEntityDn\", \"measObjInstId\", \"sMeasType\" ,\"sValue\", \"suspectFlag\" FROM \"pms_data\" WHERE \"time\" > now()-20s"}
response = requests.request("GET", url=url, headers=headers, params=querystring)
print(response.text) |
Note: JWT authorization is no longer supported in Influxdb v. 2
...