diff --git a/app/vmgateway/README.md b/app/vmgateway/README.md index 2003bc6a7b94..c956e82195b4 100644 --- a/app/vmgateway/README.md +++ b/app/vmgateway/README.md @@ -206,6 +206,22 @@ mwIDAQAB ``` This command will result in 3 keys loaded: 2 keys from files and 1 from command line. +### Using JWKS endpoint for JWT signature verification + +`vmgateway` supports using JWKS endpoint for JWT signature verification. + +In order to enable JWKS endpoint for JWT signature verification, you need to specify JWKS endpoint URL by using `auth.jwksEndpoints` flag. +When `auth.jwksEndpoints` is specified `vmageteway` will fetch public keys from the specified endpoint and use them for JWT signature verification. + +Example usage for tokens issues by Azure Active Directory: +```console +/bin/vmgateway -eula \ + -enable.auth \ + -write.url=http://localhost:8480 \ + -read.url=http://localhost:8481 \ + -auth.jwksEndpoints=https://login.microsoftonline.com/common/discovery/v2.0/keys +``` + ## Configuration The shortlist of configuration flags include the following: @@ -213,6 +229,9 @@ The shortlist of configuration flags include the following: ```console -auth.httpHeader string HTTP header name to look for JWT authorization token (default "Authorization") + -auth.jwksEndpoints array + JWKS endpoints to fetch keys for JWT tokens signature verification + Supports an array of values separated by comma or specified via multiple flags. -auth.publicKeyFiles array Path file with public key to verify JWT token signature Supports an array of values separated by comma or specified via multiple flags. diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index ae967b3fcc5e..2852ac5a0cbf 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -19,6 +19,7 @@ The following tip changes can be tested by building VictoriaMetrics components f * SECURITY: upgrade Go builder from Go1.20.0 to Go1.20.1. See [the list of issues addressed in Go1.20.1](https://github.com/golang/go/issues?q=milestone%3AGo1.20.1+label%3ACherryPickApproved). * FEATURE: [vmagent](https://docs.victoriametrics.com/vmagent.html): add support for [VictoriaMetrics remote write protocol](https://docs.victoriametrics.com/vmagent.html). This protocol allows saving egress network bandwidth costs when sending data from `vmagent` to VictoriaMetrics located in another datacenter or availability zone. This also allows reducing disk IO under high load when `vmagent` starts queuing the collected data to disk when the remote storage is temporarily unavailable or cannot keep up with the data ingestion rate. See [this feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1225). +* FEATURE: [vmgateway](https://docs.victoriametrics.com/vmgateway.html): add the ability to verify JWT signature via [JWKS endpoint](https://auth0.com/docs/secure/tokens/json-web-tokens/json-web-key-sets). See [these docs](https://docs.victoriametrics.com/vmgateway.html#using-jwks-endpoint-for-jwt-signature-verification). * FEATURE: [vmauth](https://docs.victoriametrics.com/vmauth.html): add the ability to limit the number of concurrent requests on a per-user basis via `-maxConcurrentPerUserRequests` command-line flag and via `max_concurrent_requests` config option. See [this feature request](https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3346) and [these docs](https://docs.victoriametrics.com/vmauth.html#concurrency-limiting). * FEATURE: [vmauth](https://docs.victoriametrics.com/vmauth.html): automatically retry failing `GET` requests on all [the configured backends](https://docs.victoriametrics.com/vmauth.html#load-balancing). Previously the backend error has been immediately returned to the client without retrying the request on the remaining backends. * FEATURE: [vmauth](https://docs.victoriametrics.com/vmauth.html): choose the backend with the minimum number of concurrently executed requests [among the configured backends](https://docs.victoriametrics.com/vmauth.html#load-balancing) in a round-robin manner for serving the incoming requests. This allows spreading the load among backends more evenly, while improving the response time. diff --git a/docs/vmgateway.md b/docs/vmgateway.md index f4ea98af854a..766bad4b39ad 100644 --- a/docs/vmgateway.md +++ b/docs/vmgateway.md @@ -210,6 +210,22 @@ mwIDAQAB ``` This command will result in 3 keys loaded: 2 keys from files and 1 from command line. +### Using JWKS endpoint for JWT signature verification + +`vmgateway` supports using JWKS endpoint for JWT signature verification. + +In order to enable JWKS endpoint for JWT signature verification, you need to specify JWKS endpoint URL by using `auth.jwksEndpoints` flag. +When `auth.jwksEndpoints` is specified `vmageteway` will fetch public keys from the specified endpoint and use them for JWT signature verification. + +Example usage for tokens issues by Azure Active Directory: +```console +/bin/vmgateway -eula \ + -enable.auth \ + -write.url=http://localhost:8480 \ + -read.url=http://localhost:8481 \ + -auth.jwksEndpoints=https://login.microsoftonline.com/common/discovery/v2.0/keys +``` + ## Configuration The shortlist of configuration flags include the following: @@ -217,6 +233,9 @@ The shortlist of configuration flags include the following: ```console -auth.httpHeader string HTTP header name to look for JWT authorization token (default "Authorization") + -auth.jwksEndpoints array + JWKS endpoints to fetch keys for JWT tokens signature verification + Supports an array of values separated by comma or specified via multiple flags. -auth.publicKeyFiles array Path file with public key to verify JWT token signature Supports an array of values separated by comma or specified via multiple flags.