Hackz-Megalo
プロダクト概要
。
- SMS OTP(ワンタイムパスワード)
- GitHub OAuth
- Amazon Cognito(amazonアカウント認証)
- Google OAuth 2.0
- 顔認証(S3 + lambda + rekognition)
認証成功時にはESP32デバイスに通知を送り、その都度プロペラを回すようにしてます
主な機能
- 多要素認証の段階的フロー(5ステップ)
- OAuth/OIDC連携(GitHub / Google / Amazon Cognito)
- SMS OTP認証(Vonage/Nexmo Verify API)
- Webカメラ画像の取得とサーバー送信
- lambda + rekognitionによる顔認証
- ESP32へのHTTP通知(各認証成功イベント)
技術スタック(詳細)
フロントエンド
バックエンド
- Express + TypeScript
- Passport
認証・クラウド・外部サービス
- Vonage (Nexmo) Verify API
- GitHub OAuth
- Google OAuth 2.0
- Amazon Cognito (OIDC)
openid email profileスコープで認証連携。
- amazon rekognition
- ESP32
アーキテクチャ概要
- フロントは各ステップでバックエンドの認証エンドポイントへ遷移・送信。
- バックエンドは認証成功後にフロントへリダイレクトし、クエリパラメータで結果を返却。
- 顔認証ステップでは、フロントから受け取った画像をS3へ保存後、外部認証APIへ
userIdを渡して判定。
- 各ステップの成功時にESP32へ命令を送信し、物理デバイス側アクションと連携。
実装上の特徴
- 認証機能を
features/auth配下に分割した拡張しやすい設計。
- OAuth/OIDCのコールバック成功/失敗を統一パターンでハンドリング。
- タイムアウト付きIoT通信により、ESP32がオフラインでも認証フローを継続。
- TypeScript(バックエンド)による型安全なAPI実装。
やりたかったこと
- 顔認証をcognitoのカスタム認証で行いたかった
- 音楽はスピーカー経由で流したかった