🛣️ OAuth ルート
OAuth ルートは Express ミドルウェアではなく SDK コンポーザーです。プロバイダードライバーがブラウザーリダイレクトを実行し、コールバックルートがワンタイムログイントークンを作成してブラウザーをリダイレクトします。
一覧
| ルート | メソッド / プロトコル | パス | スキーマ | バリデーター | 成功ステータス |
|---|---|---|---|---|---|
googleOAuthRoute | GET / HTTP | /auth/oauth/google | googleOauthSchema | なし | ドライバーリダイレクト |
googleOAuthCallbackRoute | GET / HTTP | /auth/oauth/google/callback | なし | なし | 302 リダイレクト |
lineOAuthRoute | GET / HTTP | /auth/oauth/line | lineOauthSchema | なし | ドライバーリダイレクト |
lineOAuthCallbackRoute | GET / HTTP | /auth/oauth/line/callback | なし | なし | 302 リダイレクト |
twitterOAuthRoute | GET / HTTP | /auth/oauth/twitter | twitterOauthSchema | なし | ドライバーリダイレクト |
twitterOAuthCallbackRoute | GET / HTTP | /auth/oauth/twitter/callback | なし | なし | 302 リダイレクト |
詳細
googleOAuthRoute
実装
エンドポイント: GET /auth/oauth/google
アクセス: パブリック。validators: []。
リクエスト: googleOauthSchema は fp、purpose、redirectUrl、省略可能な typeId、および省略可能な空の JSON オブジェクトを検証します。
パイプライン: validateURL → requestGoogleOAuth → orThrow.
リダイレクト検証: プロバイダー state の準備やドライバーの呼び出し前に、params.requestQuery.redirectUrl を configuration.oauth.allowedRedirectOrigins に対して検証します。不正または許可されていない URL は AuthenticationInvalidInputError(400)を返し、プロバイダーへのリクエストを停止します。オリジンが未設定または空の場合は AuthenticationUnexpectedError が発生し、開始ルートが 500 に対応付けます。
成功: 注入された googleOAuthDriver.request がプロバイダーリダイレクトを処理します。
失敗: AuthenticationInvalidTokenError と AuthenticationInvalidInputError は 400、AuthenticationUnexpectedError は 500 に対応します。完全なソースを表示
googleOAuthCallbackRoute
実装
エンドポイント: GET /auth/oauth/google/callback
アクセス: パブリック。validators: []。
リクエスト: 合成されたスキーマはありません。ルートはプロバイダーのコールバックデータと requestQuery.state を直接読み取ります。
パイプライン: authenticateGoogleOAuth → extractOAuthLoginState → validateURL → サインアップ時のみ checkEmailIsUniqueInIdentities → verifyGoogleOAuth → getLoginTokenTarget → getFingerprint → buildTokenVerification → generateOneTimeToken → storeOneTimeToken → generateRedirectURL → redirectTo → orThrow.
リダイレクト検証: 署名されたログイン state の抽出後、サインアップ時のメールアドレス重複検査、アイデンティティの解決、トークン生成より前に、validateURL が loginState.redirectUrl を configuration.oauth.allowedRedirectOrigins に対して検証します。リダイレクト URL を生成する前に、許可されたオリジンを持つ有効な絶対 URL が必要です。不正または許可されていない URL は AuthenticationInvalidInputError(400)、オリジンが未設定または空の場合は AuthenticationUnexpectedError(500)に対応します。設定を参照してください。
成功: redirectTo は、state のリダイレクト URL に onetimeToken を追加して 302 を返します。generateRedirectURL は追加のデコードを行わず、パーセントエンコーディングを保持します。
失敗: 無効なトークン/入力は 400、アイデンティティ未検出は 404、データベースエラーまたはオリジン設定の欠落は 500 です。Result を返す前にドライバーがスローした例外は、サービスのエラーハンドラーに伝播します。完全なソースを表示
lineOAuthRoute
実装
エンドポイント: GET /auth/oauth/line
アクセス: パブリック。validators: []。
リクエスト: lineOauthSchema は fp、purpose、redirectUrl、省略可能な typeId、および省略可能な空の JSON オブジェクトを検証します。
パイプライン: validateURL → requestLineOAuth → orThrow.
リダイレクト検証: プロバイダー state の準備やドライバーの呼び出し前に、params.requestQuery.redirectUrl を configuration.oauth.allowedRedirectOrigins に対して検証します。不正または許可されていない URL は AuthenticationInvalidInputError(400)を返し、プロバイダーへのリクエストを停止します。オリジンが未設定または空の場合は AuthenticationUnexpectedError が発生し、開始ルートが 500 に対応付けます。
成功: 注入された lineOAuthDriver.request がプロバイダーリダイレクトを処理します。
失敗: AuthenticationInvalidInputError は 400、AuthenticationUnexpectedError は 500 に対応します。その他のエラーは、明示的なルートの対応付けなしで伝播します。完全なソースを表示
lineOAuthCallbackRoute
実装
エンドポイント: GET /auth/oauth/line/callback
アクセス: パブリック。validators: []。
リクエスト: 合成されたスキーマはありません。プロバイダーのコールバックデータと requestQuery.state を読み取ります。
パイプライン: authenticateLineOAuth → extractOAuthLoginState → validateURL → verifyLineOAuth → getLoginTokenTarget → getFingerprint → buildTokenVerification → generateOneTimeToken → storeOneTimeToken → generateRedirectURL → redirectTo → orThrow.
リダイレクト検証: 署名されたログイン state の抽出後、アイデンティティの解決とトークン生成より前に、validateURL が loginState.redirectUrl を configuration.oauth.allowedRedirectOrigins に対して検証します。リダイレクト URL を生成する前に、許可されたオリジンを持つ有効な絶対 URL が必要です。不正または許可されていない URL は AuthenticationInvalidInputError(400)、オリジンが未設定または空の場合は AuthenticationUnexpectedError(500)に対応します。設定を参照してください。
成功: 生成した onetimeToken を付けて 302 リダイレクトを返します。generateRedirectURL は、state のリダイレクト URL のパーセントエンコーディングを追加のデコードなしで保持します。
失敗: 入力エラーは 400、アイデンティティ未検出は 404、データベースエラー、オリジン設定の欠落、OAuth エラーは 500 です。ドライバーのコールバックがスローした例外は Result ラッパーを通過しません。完全なソースを表示
twitterOAuthRoute
実装
エンドポイント: GET /auth/oauth/twitter
アクセス: パブリック。validators: []。
リクエスト: twitterOauthSchema は purpose、redirectUrl、省略可能な typeId、および省略可能な空の JSON オブジェクトを検証します。
パイプライン: validateURL → prepareTwitterCallbackState → requestTwitterOAuth → orThrow.
リダイレクト検証: プロバイダー state の準備やドライバーの呼び出し前に、params.requestQuery.redirectUrl を configuration.oauth.allowedRedirectOrigins に対して検証します。不正または許可されていない URL は AuthenticationInvalidInputError(400)を返し、プロバイダーへのリクエストを停止します。オリジンが未設定または空の場合は AuthenticationUnexpectedError が発生し、開始ルートが 500 に対応付けます。
成功: 注入された twitterOAuthDriver.request がプロバイダーリダイレクトを処理します。
失敗: AuthenticationInvalidInputError は 400、AuthenticationUnexpectedError は 500 に対応します。その他のエラーは、明示的なルートの対応付けなしで伝播します。完全なソースを表示
twitterOAuthCallbackRoute
実装
エンドポイント: GET /auth/oauth/twitter/callback
アクセス: パブリック。validators: []。
リクエスト: 合成されたスキーマはありません。Twitter のドライバーがコールバック state を提供します。
パイプライン: authenticateTwitterOAuth → validateURL → verifyTwitterOAuth → getLoginTokenTarget → getFingerprint → buildTokenVerification → generateOneTimeToken → storeOneTimeToken → generateRedirectURL → redirectTo → orThrow.
リダイレクト検証: プロバイダードライバーのコールバックが state とプロフィールを返した後、アイデンティティの解決とトークン生成より前に、validateURL が callbackResult.state.redirectUrl を configuration.oauth.allowedRedirectOrigins に対して検証します。リダイレクト URL を生成する前に、許可されたオリジンを持つ有効な絶対 URL が必要です。不正または許可されていない URL は AuthenticationInvalidInputError(400)、オリジンが未設定または空の場合は AuthenticationUnexpectedError(500)に対応します。設定を参照してください。
成功: 生成した onetimeToken を付けて 302 リダイレクトを返します。generateRedirectURL は、state のリダイレクト URL のパーセントエンコーディングを追加のデコードなしで保持します。
失敗: 入力エラーは 400、アイデンティティ未検出は 404、データベースエラー、オリジン設定の欠落、OAuth の失敗は 500 です。完全なソースを表示