🐈

NestJSで環境設定ファイルを非同期に読み込み、JWT設定を行う方法

2024/12/03に公開

はじめに

NestJSは、モジュールベースで構築されている強力なバックエンドフレームワークで、簡単に拡張性のあるアプリケーションを作成できます。

この記事では、NestJSのJwtModuleを使って、環境設定ファイル(.env)から非同期でJWTの設定を読み込み、JWTを発行するための簡単なコードを紹介します。

JWT認証の概要

こちらは、興味のある方だけアコーディオンを開いて確認してください。

JWTの簡単な概要

JWTは、認証のために使われるトークン形式で、サーバーとクライアント間で情報を安全にやり取りするための標準的な手段です。通常、JWTには以下のような情報が含まれます

  • ヘッダー:トークンの種類(通常はJWT)と署名アルゴリズムを記載。
  • ペイロード:トークンに埋め込む情報(例えばユーザーIDやロール)。
  • 署名:トークンの信頼性を保証するために使用。

    参考文献:豆蔵デベロッパーサイト

非同期でJWTの設定を行う方法(実際のコード)

まずは、ルートディレクトリに.envファイルを作成します。

.env
JWT_SECRET_KEY=hoge_secret

次に、モジュールファイルの設定をします。

auth.module.ts
@Module({
  imports: [
    UsersModule,
    ConfigModule.forRoot({ isGlobal: true }),
    JwtModule.registerAsync({
      imports: [ConfigModule],
      inject: [ConfigService], // useFactory内で使用するために記述
      useFactory: async (configService: ConfigService) => ({
        secret: configService.get<string>('JWT_SECRET_KEY'),
        signOptions: {
          audience: 'my-app',
          issuer: 'my-server',
          expiresIn: '60s',
        },
      }),
    }),
  ],
  controllers: [AuthController],
  providers: [AuthService],
})
export class AuthModule {}

さいごに

本業では、直近でデスクトップアプリを作成しているため、Webアプリで必要な認証とかのセキュリティ知識を強化したいと考えている所存です。

(੭ु´・ω・`)੭ु⁾⁾ ワレ、ガンバルッ!!

Discussion