認証サブシステム(メール確認・CSRF・セッション)を実装する
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 35/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
- Ambito
- api, authentication, backend, security
Direzione di ricerca
Inizia individuando la configurazione delle route Nitro e la definizione di Context, quindi associa i quattro endpoint elencati ai relativi requisiti di risposta per il browser. Traccia il modo in cui i dati attendibili di X-Forwarded-User entrano in Context e determina l’infrastruttura esistente per email, token e cookie prima di implementare il flusso. Il lavoro è completo quando la verifica dell’email, il consumo dei token monouso, i cookie di sessione e CSRF e la validazione di X-CSRF-Token funzionano per gli endpoint specificati.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
背景
認証(Auth)系エンドポイント(後述の「対象エンドポイント」)は、ブラウザ向けの HTML 応答・リダイレクト・Cookie を伴うため、oRPC(パース済み JSON を前提とする契約)には適さず、通常の Nitro ルートとして実装する。
なお本人性の担保は2層に分かれる:
- traQ ID: NeoShowcase プロキシが付与する信頼済みヘッダ
X-Forwarded-Userから取得する。自前で認証を実装する必要はなく、ヘッダをContextに注入するだけでよい。 - メールアドレス確認セッション: isct メールアドレスの所有権を確認して確立する一時セッション(Cookie)。本 issue の実装の大半はこちら側にある。
対象エンドポイント(oRPC 契約対象外)
POST /verify-email— 確認メール送信(202)GET /verify-email/confirm— 確認ページ表示(text/html)POST /verify-email/confirm— トークン消費・ログイン完了(303 リダイレクト + Set-Cookie)GET /csrf— CSRF トークン用 Cookie 発行(204)
やること
- traQ ID を
X-Forwarded-Userヘッダから取得しContextに注入する(信頼済みプロキシ前提) - メール送信基盤(isct メールアドレス宛)
- ワンタイムトークンの発行・検証・消費
-
__Host-checkin_email_verified_session/__Host-checkin_csrfCookie の発行と検証 - 状態を変更するリクエストの CSRF トークン(
X-CSRF-Token)検証
スコープ外/関連
- 認可・レート制限は #15。
- traQ ID ↔ Stripe Customer のマッピング(DB)は #18。
- oRPC 契約には含めない(RPC に不向きなブラウザフローのため)。
- Lingua principale
- TypeScript
- Stelle
- 0
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun 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 traPtitech/Checkin
-
bug documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 90/100
traPtitech/Checkin#87 ·
-
documentation
Difficoltà 1/5 Meno di un'ora Idoneità per principianti 95/100
traPtitech/Checkin#64 ·
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 86/100
traPtitech/Checkin#59 ·
-
documentation enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
traPtitech/Checkin#95 ·
-
bug
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
traPtitech/Checkin#92 ·
Tutte le issue di traPtitech/Checkin
Issue simili
-
Plugin: sheet music can't be scrolled by hand before playbackForse già presa @snakajima l’ha presa oggi. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
receptron/jinglescript#51 ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
I maintainer di solito rispondono entro 9 giorni
-
clawsweeper:needs-maintainer-review clawsweeper:needs-product-decision clawsweeper:no-new-fix-pr clawsweeper:source-repro impact:ux-friction issue-rating: 🦞 diamond lobster P3
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
openclaw/openclaw#186424 · 1 commento · 1 reazione ·
I maintainer di solito rispondono entro 1 giorno
-
chore(worker): five module header comments describe the code from before later issues changed itApertaarea:dev U2-later
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
bentleypark/aiwatch#1824 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
Pal-AI-Lab/Coopanion#469 ·
I maintainer di solito rispondono entro 1 giorno