第06章 セキュリティ
NestJS はセキュリティ対策をフレームワークレベルで統合しています。 主な機能は以下です:
- 認証(Authentication)
- 認可(Authorization)
- JWT 認証
- CORS
- Helmet(HTTPヘッダー強化)
6.1 認証(Authentication)
NestJS は Passport.js を公式に統合しており、様々なストラテジー(Local / JWT / OAuth2 など)が利用可能。
インストール
npm install @nestjs/passport passport
npm install @types/passport --save-dev
LocalStrategy の例
import { Strategy } from 'passport-local';
import { PassportStrategy } from '@nestjs/passport';
import { Injectable } from '@nestjs/common';
@Injectable()
export class LocalStrategy extends PassportStrategy(Strategy) {
constructor() {
super({ usernameField: 'email' }); // デフォルトは "username"
}
async validate(email: string, password: string): Promise<any> {
// DBからユーザー検索 & パスワード検証
if (email === 'test@example.com' && password === 'secret') {
return { userId: 1, email };
}
return null;
}
}
➡️ 認証成功時は req.user にユーザー情報が格納される。
6.2 JWT 認証
トークンベースの認証に便利。