🔐 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);