認証サブシステム(メール確認・CSRF・セッション)を実装する
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- api, authentication, backend, security
Línea de trabajo
Comienza localizando la configuración de rutas de Nitro y la definición de Context, y luego relaciona los cuatro endpoints enumerados con sus requisitos de respuesta para el navegador. Rastrea cómo entran los datos confiables de X-Forwarded-User en Context y determina la infraestructura existente para email, tokens y cookies antes de implementar el flujo. El trabajo estará terminado cuando la verificación de email, el consumo de tokens de un solo uso, las cookies de sesión y CSRF, y la validación de X-CSRF-Token funcionen para los endpoints especificados.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
背景
認証(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 に不向きなブラウザフローのため)。
- Lenguaje dominante
- TypeScript
- Estrellas
- 0
- Forks
- 0
- Merge medio
- 1 h 9 min
- PR fusionados (30 d)
- 13
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
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 traPtitech/Checkin
-
bug documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 90/100
traPtitech/Checkin#87 ·
Los mantenedores suelen responder en 1 día
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
traPtitech/Checkin#64 ·
Los mantenedores suelen responder en 1 día
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 86/100
traPtitech/Checkin#59 ·
Los mantenedores suelen responder en 1 día
-
documentation enhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
traPtitech/Checkin#95 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 5/5 Más de una semana Aptitud para principiantes 30/100
traPtitech/Checkin#92 ·
Los mantenedores suelen responder en 1 día
Todos los issues de traPtitech/Checkin
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
awesome-dsh-plugin/awesome-dsh-plugin#9184 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
farion1231/cc-switch#8829 ·
Los mantenedores suelen responder en 1 día
-
[core-client] Remove unused hand-maintained transport helpers after the definition-table cutoverAbiertodoc-audit enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100