🔐 OAuthドライバー
OAuthドライバーは、Passport.jsを使用してサードパーティOAuthプロバイダーのための統一された統合レイヤーを提供します。プロバイダーのストラテジ設定をカプセル化し、ルートと機能に構成できるシンプルなリクエストとコールバックヘルパーを公開します。
🎯 概要
NodeBlocksのOAuthドライバーは、以下を提供するPassport.jsストラテジの薄いラッパーです:
- プロバイダーの資格情報とスコープによるストラテジ設定
- 構成のためのPromiseベースのリクエスト/コールバックヘルパー
- プロバイダープロフィールを正規化するためのプラグ可能な検証コールバック
📋 利用可能なOAuthドライバー
Google OAuthドライバー
Google OAuthドライバーは、Passport.js Googleストラテジを統合し、リクエストとコールバック処理のためのヘルパーを公開します。
verifyGoogleCallback
Google OAuthコールバックを検証し、Passport.js認証のためのユーザープロフィールデータを処理します。
目的: 正規化されたプロフィール(email、displayName、accessToken)を抽出し、Passportに渡します。
パラメータ:
_req: Request— Expressリクエストオブジェクト(この実装では未使用)accessToken: string— APIアクセスのためのGoogle OAuthアクセストークンrefreshToken: string— トークン更新のためのGoogle OAuthリフレッシュトークンprofile: Profile— OAuthコールバックからのGoogleユーザープロフィールデータdone: VerifyCallback— Passport.js検証コールバック関数
戻り値: void — 結果またはエラーでdoneコールバックを呼び出す
ハンドラープロセス:
- 入力: リクエスト、アクセス/リフレッシュトークン、Googleプロフィール、Passportコールバック
- 処理: プロフィールからメールを抽出し、存在を検証、
{ accessToken, displayName, email }形式にフォーマット - 出力:
done(null, formattedProfile)またはdone(error, false)を呼び出す - エラー: メールが不足している場合に
AuthenticationBadRequestErrorをスロー
使用法:
passport.use(new GoogleStrategy({ verifyGoogleCallback }));
createGoogleOAuthDriver
Passport.jsストラテジと認証ヘルパーを備えたGoogle OAuthドライバーを作成します。
目的: Googleストラテジを設定し、initialize、request、callbackヘルパーを公開します。
パラメータ:
clientID: string— Google Cloud ConsoleからのGoogle OAuthクライアントIDclientSecret: string— Google Cloud ConsoleからのGoogle OAuthクライアントシークレットcallbackURL: string— OAuth完了後にGoogleがリダイレクトするURLscope: string[]— リクエストするOAuthスコープの配列(デフォルトは['email', 'profile'])verify: typeof verifyGoogleCallback— オプションの検証関数(デフォルトはverifyGoogleCallback)
戻り値: GoogleOAuthDriver — 完全なOAuthフロー管理を備えたGoogleOAuthDriverオブジェクト
ハンドラープロセス:
- 入力: クライアント資格情報、コールバックURL、スコープ、検証関数
- 処理: Passport Googleストラテジを設定; リクエスト/コールバックのために
passport.authenticateをPromiseでラップ - 出力:
initialize、request、callbackを公開するドライバーオブジェクト - エラー: Passport/Promise拒否を伝播
使用法:
// Google OAuthドライバーを作成:
const googleDriver = createGoogleOAuthDriver(
'your-client-id',
'your-client-secret',
'https://app.com/auth/google/callback'
);
// Expressアプリで使用:
app.use('/auth/google', googleDriver.initialize);