auth-module-builder について
Webアプリケーションを開発する人向けに、認証モジュールの実装方法を示すスキルです。ルート、ミドルウェア、パスワード処理、JWTまたはセッション方式、一般的な脅威への対策を扱います。
主な機能
- 01一般的な認証ルートの定義
- 02認証ミドルウェアの追加
- 03bcryptによるパスワードのハッシュ化と検証
- 04JWTまたは保存型セッションの利用
- 05CookieとCSRFの保護
- 06一般的な認証脅威への対策
活用シーン
- 01ログインと登録フローの構築
- 02トークン更新とパスワードリセットの追加
- 03Redisまたはデータベースでのセッション保存
- 04認証エンドポイントの防御策の確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ patricio0312rev/ skills --skill auth-module-builderインストール後、Claude Code で/auth-module-builderを入力して読み込まれたか確認します。
詳細
認証モジュールビルダー
安全で本番環境に対応した認証システムを実装します。
コアコンポーネント
ルート:POST /login、/register、/logout、/refresh、/forgot-password ミドルウェア:authenticate、requireAuth、optionalAuth セキュリティ:bcrypt によるハッシュ化、JWT 署名、安全な Cookie、CSRF トークン セッション:Redis/DB ストレージ、有効期限、リフレッシュトークン 脅威:一般的な攻撃とその緩和策を記述します
JWT パターン
// Generate tokens
const accessToken = jwt.sign(
{ userId: user.id, email: user.email },
process.env.JWT_SECRET,
{ expiresIn: "15m" }
);
const refreshToken = jwt.sign(
{ userId: user.id, type: "refresh" },
process.env.JWT_REFRESH_SECRET,
{ expiresIn: "7d" }
);
// Verify middleware
export const authenticate = async (req, res, next) => {
const token = req.headers.authorization?.split(" ")[1];
if (!token) return res.status(401).json({ error: "No token" });
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
req.user = await User.findById(decoded.userId);
next();
} catch (err) {
res.status(401).json({ error: "Invalid token" });
}
};
セッションパターン
// Express session with Redis
app.use(
session({
store: new RedisStore({ client: redisClient }),
secret: process.env.SESSION_SECRET,
resave: false,
saveUninitialized: false,
cookie: {
secure: process.env.NODE_ENV === "production",
httpOnly: true,
maxAge: 1000 * 60 * 60 * 24 * 7, // 7 days
sameSite: "lax",
},
})
);
パスワードのセキュリティ
import bcrypt from "bcrypt";
// Hash password
const hashedPassword = await bcrypt.hash(password, 10);
// Verify password
const isValid = await bcrypt.compare(password, user.hashedPassword);
セキュリティチェックリスト
- パスワードを bcrypt でハッシュ化する(コスト ≥10)
- JWT シークレットを環境変数から取得し、定期的にローテーションする
- 本番環境では HTTPS のみを使用する
- httpOnly、secure Cookie を使用する
- CSRF 対策を有効にする
- 認証ルートにレート制限を設定する
- ログイン失敗後にアカウントをロックする
- パスワードリセットトークンに有効期限を設定する
- 新しいアカウントでメールアドレスを確認する
脅威モデル
ブルートフォース攻撃:レート制限+アカウントロック トークンの窃取:短い有効期限、httpOnly Cookie、HTTPS のみ CSRF:SameSite Cookie+CSRF トークン セッション固定攻撃:ログイン時にセッション ID を再生成する XSS:入力値のサニタイズ、CSP ヘッダー
コメント
Markdown 対応