add `{your domain}/api/v1/system/config/jwks` to `publicKeyUrls`. You should append to the existing configuration such that
your SSO and JWTToken auth verification will work.
```yaml
publicKeyUrls: ${AUTHENTICATION_PUBLIC_KEYS:-[{your SSO public keys URL}, {your domain}/api/v1/system/config/jwks]}
```
Once you configure the above settings, restart OpenMetadata server .
{% note %}
<h2>Note on JWKS url Network Reachbility</h2>
Make sure the above JWKS URI - `{your domain}/api/v1/system/config/jwks` is reachable from OpenMetadata Server Instance (VM or Docker Container or Kubernetes Pod). You can run the below command from the OpenMetadata Server to test it's reachility -
```
wget -O - {your domain}/api/v1/system/config/jwks
```
{% /note %}
## Generate Token
Once the above configuration is updated, the server is restarted. Admin can go to Settings -> Bots page.
The generated token from the above page should pass onto the ingestion framework so that the ingestion can make calls
securely to OpenMetadata. Make sure this token is not shared and stored securely.
### Running Ingestion from CLI
If you are running the ingestion from CLI. Add the below configuration to the workflow configuration you pass:
```yaml
workflowConfig:
openMetadataServerConfig:
hostPort: http://localhost:8585/api
authProvider: openmetadata
securityConfig:
jwtToken: <jwt-token>
```
In the above section, under the `workflowConfig`, configure `authProvider` to be "openmetadata" and under `securityConfig`
section, add `jwtToken` and its value from the ingestion bot page.
## Configure JWT Key Pairs for Docker
Following the above documentation, you will have private key and public key pair available as mentioned [here](#create-private-public-key). Next, will proceed with the below section which will configure JWT token with docker environment.
### Create docker compose host volume mappings
Create a host directory which will be mapped as docker volumes to docker compose. This step will require you to update existing docker compose files that comes up with [OpenMetadata Releases](https://github.com/open-metadata/OpenMetadata/releases).
JWT_ISSUER="open-metadata.org" # update this as per your environment
JWT_KEY_ID="c8ec220c-be7d-4e47-97c7-098bf6a57ce1" # update this to a unique uuid4
```
### Run the docker compose command to start the services
Run the docker compose CLI command to start the docker services with the configured jwt keys.
```
docker compose -f docker-compose.yml --env-file openmetadata.prod.env up -d
```
## Configure JWT Key Pairs for Kubernetes
Following the above documentation, you will have private key and public key pair available as mentioned [here](#create-private-public-key). Next, will proceed with the below section which will configure JWT token with kubernetes environment.
### Create Kubernetes Secrets for the Key Pairs
Create Kubernetes Secrets from file using the kubernetes imperative commands below.
### Update Helm Values to mount Kubernetes secrets and configure JWT Token Configuration
Update your helm values to mount Kubernetes Secrets as Volumes and update the Jwt Token Configuration to point the Key File Paths to mounted path (absolute file path).