[Bug][GitHub] GitHub App JWT rejected when host clock is slightly ahead
I maintainer di solito rispondono entro 2 giorni
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 3/5
- Tempo stimato
- Mezza giornata
- Idoneità per principianti
- 62/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- github, go
- Ambito
- authentication, backend
Direzione di ricerca
Start with CreateJwt on GithubAppKey in backend/plugins/github/models/connection.go, where iat and exp are set from now. The JWT change is the contained part: backdate iat by 60s and keep exp within 10 minutes, then add a unit test that checks the claims. The cron failure path (MakePlanForBlueprint and the blueprint cron runner's logging) is a separate, design-level question about recording a failed pipeline, so scope it apart from the JWT fix.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Search before asking
- I had searched in the issues and found no similar issues.
What happened
With a GitHub App connection, blueprint runs fail at plan time:
unexpected status code while getting installation access token: {"message":"'Expiration time' claim ('exp') is too far in the future","documentation_url":"https://docs.github.com/rest","status":"401"} (401)
GithubAppKey.CreateJwt in backend/plugins/github/models/connection.go sets iat = now and exp = now + 600. GitHub rejects a JWT whose exp is more than 10 minutes in the future, so any host clock even slightly ahead of GitHub's fails. Our host drifted about 1s ahead: runs failed intermittently below 1s and every time above it.
Scheduled (cron) runs fail silently. The error is raised in MakePlanForBlueprint before any pipeline is created, so no pipeline record exists: nothing shows as a failed run in the UI, and alerting on pipeline status can't catch it. The only trace is the lake log:
[blueprint] run cron job failed on blueprint:[1][Cerivo-Blueprint]
caused by: unexpected status code while getting installation access token: ... (401)
What do you expect to happen
Tolerate small clock drift, as GitHub recommends: backdate iat by 60s and keep exp under 10 minutes (e.g. iat = now - 60, exp = now + 540).
When plan generation fails for a scheduled run, record it as a failed pipeline (or otherwise surface it) instead of only logging it.
How to reproduce
- Create a GitHub App connection and a blueprint using it.
- Set the DevLake host clock about 2s ahead of real time.
- Trigger the blueprint.
Anything else
- GitHub docs: https://docs.github.com/en/apps/creating-github-apps/authenticating-with-a-github-app/generating-a-json-web-token-jwt-for-a-github-app
- Related:
POST /blueprints/:id/triggerreturns GitHub's 401 as its own HTTP 401. config-ui treats any 401 as an expired session and redirects to/login, which (withAUTH_ENABLEDunset) shows "Single Sign-On is not configured". That is misleading for what is an upstream GitHub error.
Version
v1.0.3-beta14 (same code on main)
Are you willing to submit PR?
- Yes I am willing to submit a PR!
Code of Conduct
- I agree to follow this project's Code of Conduct
- Lingua principale
- Go
- Stelle
- 3.2k
- Fork
- 819
- Merge medio
- 2g 22h
- PR unite (30g)
- 43
Preparare l'ambiente
Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Nessuna guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di apache/devlake
-
[Bug][Project] Invalid metric plugin options are accepted on project save and only fail at the next pipeline runForse già presa @chenwei791129 l’ha presa 1 giorno fa. Aperta
Difficoltà 3/5 Mezza giornata Idoneità per principianti 22/100
I maintainer di solito rispondono entro 2 giorni
-
[Bug][Dashboard] Engineering Throughput PR time panels count PRs without a project_pr_metrics row as 0 hoursForse già presa @chenwei791129 l’ha presa 1 giorno fa. Aperta
Difficoltà 3/5 Mezza giornata Idoneità per principianti 22/100
I maintainer di solito rispondono entro 2 giorni
-
[Bug][e2e] Several plugin e2e tests fail on a fresh database because they depend on tables created by other testsForse già presa @chenwei791129 l’ha presa 2 giorni fa. Aperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 35/100
I maintainer di solito rispondono entro 2 giorni
-
[Feature][dora] Allow filtering which pull requests count toward Lead Time for Changes by branch nameForse già presa @chenwei791129 l’ha presa 1 giorno fa. Aperta
Difficoltà 5/5 Più di una settimana Idoneità per principianti 15/100
I maintainer di solito rispondono entro 2 giorni
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 42/100
I maintainer di solito rispondono entro 2 giorni
Tutte le issue di apache/devlake
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
I maintainer di solito rispondono entro 1 giorno
-
documentation hacktoberfest priority: low skill: good first issue status: ready for dev
Difficoltà 2/5 Mezza giornata Idoneità per principianti 85/100
hyperledger-labs/fabric-smart-client#2142 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
numberly/vault-db-injector#107 ·
I maintainer di solito rispondono entro 1 giorno
-
area/import kind/bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 62/100
I maintainer di solito rispondono entro 1 giorno
-
[DOC] Wrong sg_egress_ports range in the Terraform Databricks Guide for AWS Hub & Spoke with Network FirewallForse già presa @akhil9tiet l’ha presa oggi. Apertadocs
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 72/100
databricks/terraform-provider-databricks#6080 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni