Takip et

NestJS’de Swagger’ı JWT Kimlik Doğrulamasıyla Kusursuz Bir Şekilde Entegre Etme

NestJS’de Swagger’ı JWT Kimlik Doğrulamasıyla Kusursuz Bir Şekilde Entegre Etme

NestJS, TypeScript ile yazılmış, güçlü, ölçeklenebilir ve sağlam mimariye sahip bir Node.js çerçevesidir. Swagger, API’leriniz için etkileşimli bir dokümantasyon ve test ortamı sağlayan açık kaynaklı bir araçtır. JWT (JSON Web Token), API’lerinize güvenli erişimi doğrulamak için yaygın olarak kullanılan standart bir yöntemdir.

Bu makalede, NestJS uygulamalarınızda Swagger’ı JWT kimlik doğrulamasıyla nasıl sorunsuz bir şekilde entegre edeceğinizi adım adım açıklayacağız. Böylece, API’leriniz için güvenli ve dokümante edilmiş bir arayüz oluşturabilirsiniz.

Gereksinimler

* Node.js ve npm (veya yarn)
* Bir NestJS projesi

Kurulum

Öncelikle, yeni bir NestJS projesi oluşturun veya mevcut bir projenizi kullanın. Daha sonra, aşağıdaki paketleri kurmanız gerekecektir:

“`bash
npm install @nestjs/platform-express @nestjs/swagger @nestjs/passport passport-jwt
“`

Swagger’ı Kurma

İlk olarak, `main.ts` dosyasında Swagger’ı yapılandıralım:

“`typescript
import { NestFactory } from ‘@nestjs/core’;
import { AppModule } from ‘./app.module’;
import { DocumentBuilder, SwaggerModule } from ‘@nestjs/swagger’;

async function bootstrap() {
const app = await NestFactory.create(AppModule);

const config = new DocumentBuilder()
.setTitle(‘My API’)
.setDescription(‘API description’)
.setVersion(‘1.0’)
.addTag(‘users’)
.build();
const document = SwaggerModule.createDocument(app, config);
SwaggerModule.setup(‘api’, app, document);

await app.listen(3000);
}
bootstrap();
“`

Bu kod bloğu, Swagger’ı yapılandırarak API’niz için bir dokümantasyon oluşturur. Bu dokümantasyon, API’nizin uç noktalarının listelerini, parametrelerini ve yanıtlarını içerecektir.

JWT Kimlik Doğrulamasını Uygulama

JWT kimlik doğrulaması için `@nestjs/passport` ve `passport-jwt` paketlerini kullanacağız. Öncelikle, `AuthModule` adlı yeni bir modül oluşturun:

“`typescript
import { Module } from ‘@nestjs/common’;
import { JwtModule } from ‘@nestjs/jwt’;
import { PassportModule } from ‘@nestjs/passport’;
import { JwtStrategy } from ‘./jwt.strategy’;
import { AuthService } from ‘./auth.service’;
import { UsersModule } from ‘../users/users.module’;

@Module({
imports: [
UsersModule,
PassportModule.register({ defaultStrategy: ‘jwt’ }),
JwtModule.register({
secret: ‘your-secret-key’,
signOptions: { expiresIn: ‘1h’ },
}),
],
providers: [AuthService, JwtStrategy],
exports: [AuthService, JwtModule],
})
export class AuthModule {}
“`

Bu modül, JWT stratejisi ve JWT kimlik doğrulaması için gerekli olan servisleri içerir. `secret` değişkeni, JWT’leri imzalamak ve doğrulamak için kullanılan gizli bir anahtardır.

JWT Stratejisini Yapılandırma

`jwt.strategy.ts` dosyasında JWT stratejisini tanımlayalım:

“`typescript
import { Injectable } from ‘@nestjs/common’;
import { PassportStrategy } from ‘@nestjs/passport’;
import { ExtractJwt, Strategy } from ‘passport-jwt’;
import { ConfigService } from ‘@nestjs/config’;

@Injectable()
export class JwtStrategy extends PassportStrategy(Strategy) {
constructor(private configService: ConfigService) {
super({
jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
ignoreExpiration: false,
secretOrKey: configService.get(‘JWT_SECRET’),
});
}

async validate(payload: any) {
return { userId: payload.sub, username: payload.username };
}
}
“`

Bu strateji, istekte bulunan JWT’nin geçerliliğini doğrulayacaktır.

Swagger’ı JWT ile Güvenlik

Swagger’ı JWT ile korumak için `@nestjs/swagger` paketindeki `@ApiBearerAuth` dekoratörünü kullanacağız.

“`typescript
import { Controller, Get, UseGuards } from ‘@nestjs/common’;
import { AuthGuard } from ‘@nestjs/passport’;
import { ApiBearerAuth, ApiTags } from ‘@nestjs/swagger’;

@ApiTags(‘secured’)
@Controller(‘secured’)
@UseGuards(AuthGuard(‘jwt’))
@ApiBearerAuth()
export class SecuredController {
@Get()
getSecuredData() {
return ‘Protected data’;
}
}
“`

Bu kod bloğu, `SecuredController`’ı JWT kimlik doğrulaması gerektiren bir denetleyici olarak işaretler. `@ApiBearerAuth` dekoratörü, Swagger dokümantasyonuna JWT kimlik doğrulaması gerektiği bilgisini ekler.

Sonuç

Bu makalede, NestJS uygulamalarınızda Swagger’ı JWT kimlik doğrulamasıyla nasıl sorunsuz bir şekilde entegre edeceğinizi öğrendiniz. Bu adımları izleyerek API’leriniz için güvenli ve dokümante edilmiş bir arayüz sağlayabilirsiniz.

Ek Kaynaklar

* NestJS Dokümantasyonu: Kimlik Doğrulama
* Swagger Dokümantasyonu: Kimlik Doğrulama
* Fatih Soysal Blog

#Etiketler
NestJS, Swagger, JWT, Kimlik Doğrulama, API Dokümantasyonu, API Güvenliği, PassportJS

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.