Add user:pass Basic auth mode for API-key connectors

The API-key connection transport could present a key as a Bearer token,
an x-api-key header, a custom scheme (SSWS/Token), or HTTP Basic with an
empty password (Cursor). None of these can carry a real password, which
providers such as ClickHouse Cloud (keyId:keySecret) and Langfuse
(publicKey:secretKey) require.

Add a fourth mode, APIKeyBasicAuthUserPass, that base64-encodes the
stored "username:password" credential verbatim into Authorization: Basic.
SetBasicAuth cannot express this -- it re-appends a ":" and corrupts the
credential. The mode is wired generically through the registry and the
create-connector resolver and is mutually exclusive with the other
API-key auth modes.

Signed-off-by: Aurélien Sibiril <81782+aureliensibiril@users.noreply.github.com>
This commit is contained in:
Aurélien Sibiril
2026-06-12 19:52:58 +02:00
parent 897ca031e2
commit bd6a470d6d
6 changed files with 125 additions and 9 deletions

View File

@@ -41,10 +41,11 @@ func (r *mutationResolver) CreateAPIKeyConnector(ctx context.Context, input type
Provider: input.Provider,
Protocol: coredata.ConnectorProtocolAPIKey,
Connection: &connector.APIKeyConnection{
APIKey: input.APIKey,
Header: r.providerRegistry.APIKeyHeader(input.Provider),
BasicAuth: r.providerRegistry.APIKeyUsesBasicAuth(input.Provider),
Scheme: r.providerRegistry.APIKeyAuthScheme(input.Provider),
APIKey: input.APIKey,
Header: r.providerRegistry.APIKeyHeader(input.Provider),
BasicAuth: r.providerRegistry.APIKeyUsesBasicAuth(input.Provider),
BasicAuthUserPass: r.providerRegistry.APIKeyUsesBasicAuthUserPass(input.Provider),
Scheme: r.providerRegistry.APIKeyAuthScheme(input.Provider),
},
}