docs-v2/content/shared/influxdb3-admin/tokens/_index.md

4.0 KiB

Manage tokens to authenticate and authorize access to server actions, resources, and data in your {{< product-name >}} instance.

Provide your token

If you start the {{< product-name >}} server with authentication enabled (the default), future server actions (CLI commands and HTTP API requests) require a valid token for authorization.

The first admin token you create is the operator token (named _admin), which has full administrative privileges. You can use the operator token to authenticate your requests and manage additional authorization tokens.

The mechanism for providing your token depends on the client you use to interact with {{% product-name %}}--for example:

{{< tabs-wrapper >}} {{% tabs %}} influxdb3 CLI HTTP API {{% /tabs %}} {{% tab-content %}}

When using the influxdb3 CLI, you can set the INFLUXDB3_AUTH_TOKEN environment variable to automatically provide your authorization token to all influxdb3 commands--for example:

{{% code-placeholders "YOUR_AUTH_TOKEN" %}}

# Export your token as an environment variable
export INFLUXDB3_AUTH_TOKEN=YOUR_AUTH_TOKEN

# Run an influxdb3 command
influxdb3 query \
  --database DATABASE_NAME \
  "SELECT * FROM 'DATABASE_NAME' WHERE time > now() - INTERVAL '10 minutes'"

{{% /code-placeholders %}}

To specify a token in the command and override the environment variable, pass the --token option with your authorization token--for example:

{{% code-placeholders "YOUR_AUTH_TOKEN" %}}

# Include the --token option in your influxdb3 command
influxdb3 query \
  --token YOUR_AUTH_TOKEN \
  --database DATABASE_NAME \
  "SELECT * FROM 'DATABASE_NAME' WHERE time > now() - INTERVAL '10 minutes'"

{{% /code-placeholders %}}

You can also set the INFLUXDB3_AUTH_TOKEN environment variable to automatically provide your authorization token to all influxdb3 commands.

{{% /tab-content %}} {{% tab-content %}}

To authenticate directly to the HTTP API, you can include your authorization token in the HTTP Authorization header of your request. The Authorization: Bearer AUTH_TOKEN scheme works with all HTTP API endpoints that require authentication.

The following examples use curl to show to authenticate to the HTTP API.

{{% code-placeholders "YOUR_AUTH_TOKEN" %}}

# Add your token to the HTTP Authorization header
curl "http://{{< influxdb/host >}}/api/v3/query_sql" \
  --header "Authorization: Bearer YOUR_AUTH_TOKEN" \
  --data-urlencode "db=DATABASE_NAME" \
  --data-urlencode "q=SELECT * FROM 'DATABASE_NAME' WHERE time > now() - INTERVAL '10 minutes'"

Authenticate using v1 and v2 compatibility

# Token scheme with v2 /api/v2/write
curl http://localhost:8181/api/v2/write\?bucket\=DATABASE_NAME \
  --header "Authorization: Token YOUR_AUTH_TOKEN" \
  --data-raw "home,room=Kitchen temp=23.5 1622547800"
# Basic scheme with v1 /write
# Username is ignored, but required for the request
# Password is your auth token encoded in base64
curl "http://localhost:8181/write?db=DATABASE_NAME" \
  --user "admin:YOUR_AUTH_TOKEN" \
  --data-raw "home,room=Kitchen temp=23.5 1622547800"
# URL auth parameters with v1 /write
# Username is ignored, but required for the request
curl "http://localhost:8181/write?db=DATABASE_NAME&u=admin&p=YOUR_AUTH_TOKEN" \
  --data-raw "home,room=Kitchen temp=23.5 1622547800"

{{% /code-placeholders %}} {{% /tab-content %}} {{< /tabs-wrapper >}}

Replace the following with your values:

  • {{% code-placeholder-key %}}YOUR_AUTH_TOKEN{{% /code-placeholder-key %}}: your {{% token-link %}}
  • {{% code-placeholder-key %}}DATABASE_NAME{{% /code-placeholder-key %}}: the name of the database you want to query

To use tokens with other clients for {{< product-name >}}, see the client-specific documentation:

{{< children hlevel="h2" readmore=true hr=true >}}