Refreshing client-credentials BYOIDC
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 52/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- python
Línea de trabajo
Comienza en el punto de entrada connect() y en el punto de unión child 1 flink_auth; después compara el ClientCredentialsTokenProvider, OAuthCredentialsProvider y OAuthTokenAuthenticator referenciados en #399. Define la clase de autenticación y el cableado de connect() en torno a los parámetros external* indicados, y añade pruebas que cubran la actualización tras la expiración, el comportamiento single-flight, un único reintento ante 401 y la exclusividad de la configuración.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
- Goal: reach parity with Flink Table API client PR-399's second OAuth mode — a self-refreshing external token sourced from the caller's IdP via client-credentials, so BYOIDC can sustain long-running streaming that outlives a single short-lived token (the gap child 1 documents but does not solve).
- Surface: new
connect()params mirroring the plugin's option names —external_token_url,external_client_id,external_client_secret,external_token_scope. Mutually exclusive with the staticexternal_access_tokenand with every API-key param. - Scope (in): a refreshinghttpx.Authfor the_flink_authslot built around an internal token-source member — a callable yielding a token and its expiry — that the refresh machinery (single-flight caching, proactive refresh ahead of expiry, forced re-fetch + one retry on HTTP 401) wraps uniformly. Child 2 ships the canned implementation of that source: an OAuth2 client-credentials grant againstexternal_token_url(the driver readsexpires_inoff the grant response, which is what feeds proactive refresh). The #138 401→OperationalErrortranslation is the fallback if refresh can't recover. - Out of scope: any control-plane reach (still Flink-only); the Auth0 chain and everything in the sibling interactive epic.
- Depends on: child 1's
_flink_authseam. - Reference: #399
internal/ClientCredentialsTokenProvider(the canned client-credentials
source) wrapped byOAuthCredentialsProvider(single-flight, 30s skew) +OAuthTokenAuthenticator
(MAX_ATTEMPTS=2, 401-driven refresh). - Sized right: one new auth class +
connect()wiring + tests; no new package, no threads
beyond the refresh single-flight, no control-plane surface.
Near-free follow-on (2b) — caller-supplied token source. Because child 2 is built around the > internal token-source member above, exposing a caller-supplied implementation is a widening, not > a separate mechanism: the auth keeps the source as a data member and either instantiates its canned > client-credentials impl (given the config params) or defers to a callable the caller passes — the > refresh machinery is identical either way. This is exactly #399's factoring > (
OAuthCredentialsProviderwraps someOAuthTokenProvider;ClientCredentialsTokenProvideris > the built-in one, a registered callback is the BYO one), and it covers non-standard sources — Azure > Managed Identity, AWS IAM workload identity, in-house token services. The one added contract: > for the BYO callable to get the same proactive refresh as the canned source it must surface a > token plus an expiry (#399'sOAuthToken(accessToken, expiresAt)), not a barestr— a bare > string can only be refreshed reactively on 401. File it only when a concrete non-standard-source > demand surfaces; the seam it needs already exists from child 2.
- Lenguaje dominante
- Python
- Estrellas
- 6
- Forks
- 1
- Merge medio
- 1 d 2 h
- PR fusionados (30 d)
- 15
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de confluentinc/confluent-sql
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
confluentinc/confluent-sql#226 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
confluentinc/confluent-sql#224 ·
Los mantenedores suelen responder en 1 día
-
Fix the paramstyle declarationAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
confluentinc/confluent-sql#223 ·
Los mantenedores suelen responder en 1 día
-
Update connector configAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
confluentinc/confluent-sql#125 ·
Los mantenedores suelen responder en 1 día
-
List connectorsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 64/100
confluentinc/confluent-sql#124 ·
Los mantenedores suelen responder en 1 día
Todos los issues de confluentinc/confluent-sql
Issues similares
-
approved Good First Issue scope: docs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
hiero-ledger/hiero-sdk-python#2730 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
wemake-services/wemake-django-template#3178 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
md/asciidoc/csv: an explicit `encoding="utf-8"` keeps a leading BOM, the auto-detect path drops itAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
docling-project/docling#4846 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
neurostuff/NiMARE#1181 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
pytest-dev/pytest#15180 ·
Los mantenedores suelen responder en 1 día