google-auth: Thread safety race condition during 401 client certificate rotation in transports
Maintainer antworten meist innerhalb von 1 Tag
@agrawalradhika-cell arbeitet bereits daran.
Seit 19.8.2026.
- #18168 von @agrawalradhika-cell — offen
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 72/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Ruhig
- Tech-Stack
- python
- Bereich
- networking, security
Rechercherichtung
Beginnen Sie in google.auth.transport.requests und google.auth.transport.urllib3, wobei Sie sich auf die HTTP-Transport-Handler konzentrieren, die configure_mtls_channel nach einer 401-Antwort aufrufen. Verfolgen Sie die Pfade zur Neukonfiguration von shared-session und pool-manager und überprüfen Sie anschließend, dass konkurrierende Zertifikatsrotationen serialisiert werden und keine Mutation von adapter oder pool-manager gleichzeitig erfolgt.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
When handling 401 Unauthorized responses, the HTTP transport interceptors in google.auth.transport.requests and google.auth.transport.urllib3 attempt to auto-rotate expired mTLS client certificates by calling configure_mtls_channel().
In multi-threaded environments, if multiple threads share an authorized session and hit a 401 concurrently, they will trigger the certificate rotation at the same time. Because there is no synchronization lock, this leads to race conditions. Multiple threads will redundantly read the updated certificates and concurrently mutate the underlying session's adapter mappings (requests.Session.adapters) or pool managers, which is not thread-safe and can cause runtime exceptions.
We should introduce a lock (e.g., using threading.Lock) around the configure_mtls_channel reconfiguration block inside the transport handlers to ensure that certificate rotation is performed serially.
- Vorherrschende Sprache
- Python
- Sterne
- 5.4k
- Forks
- 1.8k
- Ø Merge
- 2 T. 9 Std.
- Gemergte PRs (30 T.)
- 138
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Hat eine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus googleapis/google-cloud-python
-
api: spanner type: feature request
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
googleapis/google-cloud-python#18584 ·
Maintainer antworten meist innerhalb von 1 Tag
-
ci: remove UV_PRERELEASE workaround once Python 3.15 is officially releasedEvtl. vergeben @daniel-sanche hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
googleapis/google-cloud-python#18532 ·
Maintainer antworten meist innerhalb von 1 Tag
-
auth: call_client_cert_callback() discards passphrase for encrypted keysEvtl. vergeben @kwy404 hat das vor 11 Tagen übernommen. Offen
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 92/100
googleapis/google-cloud-python#18467 ·
Maintainer antworten meist innerhalb von 1 Tag
-
auth: `impersonated_credentials` loses `subject` on copy, so `with_scopes()` and `with_quota_project()` turn off domain wide delegationEvtl. vergeben @Om-singhaI hat das vor 23 Tagen übernommen. Offenauth priority: p2 type: bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
googleapis/google-cloud-python#18428 ·
Maintainer antworten meist innerhalb von 1 Tag
-
priority: p2 type: bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
googleapis/google-cloud-python#18375 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in googleapis/google-cloud-python
Ähnliche Issues
-
bug difficulty:2 good first issue help wanted
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
MakazhanAlpamys/Soup#1865 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area: agents area: docs good first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
openapi/gknowledge#23 ·
-
useless-suppression reported for deprecated-* messages that should be exemptEvtl. vergeben @adityasinha-ghub hat das heute übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 88/100
pylint-dev/pylint#11656 ·
Maintainer antworten meist innerhalb von 1 Tag
-
area:provisioning effort:S priority:P2 provider:local-libvirt risk:daytime-only status:in-progress type:bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
randomparity/kdive#3203 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
get() for StrEnumEvtl. vergeben @FeJo5952 hat das heute übernommen. Offengood first issue
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
collective/icalendar#1921 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag