API key verification forwards client User-Agent, causing Python urllib requests to fail
Maintainer antworten meist innerhalb von 1 Tag
Bewertung
- Schwierigkeit
- 1/5
- Geschätzter Aufwand
- 1-3 Stunden
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Bug
- Klarheit
- Klar beschrieben
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- node.js, typescript
- Bereich
- api, authentication
Rechercherichtung
The report names verifyAPIKey() and createBackendApiClient(options) in @clerk/backend, and includes a reproduction repository with an npm run repro script. Read the verification path and compare the outbound request's User-Agent with the incoming request; run the reproduction with both User-Agent values. Done when both requests authenticate successfully with the same credentials. An open linked pull request (#10358) indicates work is already underway.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Preliminary Checks
-
I have reviewed the documentation: https://clerk.com/docs
-
I have searched for existing issues: https://github.com/clerk/javascript/issues
-
I have not already reached out to Clerk support via email or Discord (if you have, no need to open an issue here)
-
This issue is not a question, general help request, or anything other than a bug report directly related to Clerk. Please ask questions in our Discord community: https://clerk.com/discord.
Reproduction
https://github.com/jandorn/clerk-api-key-user-agent-repro
Publishable key
pk_live_Y2xlcmsudGVsZXNjb3BlLmVuZXJneSQ
Description
Steps to reproduce:
- Clone the reproduction repository and run
npm ci. - Copy
.env.exampleto.envand configure credentials from the same Clerk instance, including a valid API key. - Run
npm run repro.
The script uses unpatched @clerk/[email protected] and calls authenticateRequest(request, { acceptsToken: 'api_key' }) twice with the same credentials. Only the incoming User-Agent changes.
Expected behavior:
Both requests authenticate successfully.
Actual behavior:
Python-urllib/3.11→ upstream HTTP 403 (text/html),isAuthenticated: false, reason:unexpected-error.clerk-api-key-repro/1.0→ upstream HTTP 200 (application/json),isAuthenticated: true.
The full live output is included in the reproduction README.
Suspected cause:
verifyAPIKey() passes the authentication context to createBackendApiClient(options). The context's incoming userAgent overrides the SDK's default User-Agent.
Using the SDK User-Agent for this outbound request resolved the issue in our application:
const client = createBackendApiClient({ ...options, userAgent: USER_AGENT });
Environment
System:
OS: macOS 27.0.1
CPU: (15) arm64 Apple M5 Pro
Memory: 75.17 MB / 24.00 GB
Shell: 5.9 - /bin/zsh
Binaries:
Node: 23.11.0 - /opt/homebrew/bin/node
npm: 11.19.1 - /opt/homebrew/bin/npm
pnpm: 10.11.0 - /opt/homebrew/bin/pnpm
bun: 1.3.9 - /Users/jandorn/.bun/bin/bun
Browsers:
Chrome: 155.0.8059.85
Firefox: 144.0.2
Safari: 27.0.1
npmPackages:
@clerk/backend: 3.2.2 => 3.2.2
- Vorherrschende Sprache
- TypeScript
- Sterne
- 1.8k
- Forks
- 483
- Ø Merge
- 1 T. 23 Std.
- Gemergte PRs (30 T.)
- 325
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 clerk/javascript
-
ClerkAPIError drops meta.lockout_expires_in_seconds from user_locked errorsEvtl. vergeben @umeraamir69 hat das vor 4 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
clerk/javascript#10026 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
@clerk/nextjs: onBeforeSetActive never settles when invalidateCacheAction rejects (e.g. after a redeploy), so setActive and signOut hang foreverEvtl. vergeben @RaphaelFakhri hat das vor 20 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
clerk/javascript#9987 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
needs-triage
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 44/100
clerk/javascript#10413 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Dev instances: clerk-js rewrites __clerk_db_jwt non-atomically, concurrent requests fail with dev-browser-missingEvtl. vergeben @umeraamir69 hat das vor 3 Tagen übernommen. Offen
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
clerk/javascript#10411 ·
Maintainer antworten meist innerhalb von 1 Tag
-
needs-triage
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 55/100
clerk/javascript#10356 ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in clerk/javascript
Ähnliche Issues
-
支持对已取消(cancelled)任务生成报告Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 77/100
Clouditera/VulnHunter#57 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug bug:behavior clawsweeper:bulk-filed clawsweeper:fix-shape-clear clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:auth-provider issue-rating: 🦞 diamond lobster P2
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
openclaw/openclaw#185297 · 1 Kommentar · 1 Reaktion ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 62/100
-
bug needs-triage
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 76/100
apex-dev-tools/apex-log-parser#199 ·
Maintainer antworten meist innerhalb von 1 Tag