- Clients to SRP: how your applications authenticate to the proxy (client authentication) and whether the proxy endpoint serves HTTPS.
- SRP to Schema Registry: the proxy’s own credentials for the backend registry (Schema Registry backend connection). Client credentials are never forwarded to the backend.
- SRP to Kafka: the proxy’s connection to the backing Kafka cluster (Kafka connection), used by the
reactiveandtopic-aclauthorization modes.
Core settings
These settings control the identity and clustering behavior of the SRP instance. TheSCHEMA_REGISTRY_PROXY_APP_ID is how Console differentiates between multiple SRP deployments in your infrastructure. The clustering settings (CLUSTER_NODE_INDEX, CLUSTER_MAX_NODE_INDEX) enable high-availability deployments where multiple SRP instances work together to handle load and provide failover.
License
SRP requires a Conduktor Scale or Gateway license and refuses to start without a valid one. The license is checked once, at startup — a proxy that is already running keeps serving after its license expires, but the next restart fails. The license expiry date is exported as thelicense_expiry_timestamp_seconds Prometheus metric (Unix timestamp; not exported for licenses without an expiry date), so you can alert before a restart would fail.
Client authentication (clients to SRP)
Determines how SRP validates the identity of clients making requests.AUTH_PROVIDER is required and has no default: SRP refuses to start until it is set.
JWT authentication
Production-ready authentication that validates JSON Web Tokens (JWT) against an OAuth2/OIDC provider’s JWKS endpoint (for example Keycloak, Auth0 or Okta). The authenticated identity (the configured claim) is the service account name authorization checks run against.HTTP Basic authentication
File-based username/password authentication, with no dependency on an external identity provider. Credentials are read from a JSON file mounted into the container and hot-reloaded on change, so you can rotate credentials without restarting the proxy. Passwords are bcrypt hashes; plaintext passwords are rejected unless explicitly allowed.
The file is validated at startup: with
AUTH_PROVIDER=basic, the proxy refuses to start on a missing, unreadable or empty file, invalid JSON, a duplicate user, or a malformed hash — each with a message naming the file and the fix. Supported bcrypt variants are 2a, 2b and 2y, with a cost between 4 and 31 (the cost range is checked at load time, not on a live request).
Live reload replaces the credential set atomically: in-flight requests see either the old or the new set, never a half-applied one. A malformed or unreadable file is not applied and does not clear the credential set — the last good snapshot keeps serving and the next tick retries. Reload outcomes are exported as the basic_auth_credentials_reload_total{result="success|failure"} metric; alert on failure, since it means the file on disk and the credentials in force have drifted apart.
Performance: bcrypt verification is deliberately expensive — at cost 12 it would dominate the latency of every proxied call. To keep it out of the hot path, a verified username and password pair is remembered for two minutes (at most 1,024 entries; successes only; the password itself is never stored). Two consequences: a wrong password always pays the full bcrypt cost, so brute-force attempts stay expensive — and so does a workload that sends a different credential on every request. Deleting a user takes effect on the next reload regardless of the cache, because credentials are consulted before it. An unknown username fails in the same time as a wrong password, so response timing doesn’t reveal which usernames exist, and passwords longer than 72 bytes (the bcrypt maximum) are a plain 401, not a server error.
HTTPS for the proxy endpoint
Enables HTTPS between clients and SRP: encrypts schema data in transit, authenticates the server to clients and can optionally authenticate clients to the server (mutual TLS). Both JKS (Java KeyStore) and PEM certificate formats are supported.JKS keystore mode
PEM certificate mode
mTLS (client certificates)
Authorization
AUTHORIZATION_MODE selects how SRP decides whether an authenticated client may perform a schema operation. Every mode implements the same contract: schema registration requires Write on the subject, every other proxied endpoint requires Read, and a denied request returns HTTP 403. See authorization modes for how each mode works and when to use it.
reactive(default): permissions managed in Conduktor Console via Self-service and distributed to SRP over Kafka.topic-acl(standalone): permissions derived from the Kafka topic ACLs already defined in the backing cluster.read-only(standalone): every authenticated read passes through, every write is rejected. No Kafka connection needed.
Schema Registry backend connection (SRP to Schema Registry)
Defines how SRP connects to the Confluent Schema Registry where schemas are stored. These are the proxy’s own credentials: SRP authenticates to the backend itself (Basic Auth, OAuth or mTLS) and never forwards client credentials upstream.Backend selection
Confluent Schema Registry connection
Basic authentication to Schema Registry
Bearer/OAuth authentication to Schema Registry
TLS to Schema Registry
Kafka connection (SRP to Kafka)
The proxy’s own connection to the backing Kafka cluster. Which parts you need depends on the authorization mode:reactivemode uses Kafka to receive permission updates from Console (_conduktor_srp_commands), publish heartbeats for Console discovery (_conduktor_srp_events) and keep multiple SRP instances in sync.topic-aclmode uses this connection to read topic ACLs through the Kafka Admin API.read-onlymode needs no Kafka connection at all.
Connection
Console synchronization topics (reactive mode)
Kafka security protocol
SASL configuration
SASL/OAUTHBEARER configuration
Kafka TLS configuration
Observability
Enables monitoring and troubleshooting capabilities:- OpenTelemetry: distributed tracing to track requests through the system, helping identify bottlenecks and failures
- Prometheus metrics: operational metrics (request counts, latencies, error rates) for monitoring and alerting
- Logging: structured JSON logs for debugging and audit trails