ASP.NET CORE SWAGGER AUTHORIZE BUTONU İLE JWT TEST ETMEK

ASP.NET Core projelerinde swagger kurulumu’nu bir önceki yazıda anlatmıştım. Bu yazıda sıra geldi JWT (Json Web Token) ile istek göndermeye.

Swagger’da yaptığımız varsayılan konfigürasyon ile sadece swagger dökümanları oluşuyor JWT desteği için küçük bir ayar gerekli.

Öncelikle Program.cs dosyasının bir önceli versiyonunu baz alarak güncellenmiş halini paylaşıyorum.

C#
using Microsoft.OpenApi.Models;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

builder.Services.AddControllers();
// Learn more about configuring OpenAPI at https://aka.ms/aspnet/openapi
builder.Services.AddOpenApi();


// Swagger servisini ekle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen(options =>
{
    // 🔒 Swagger'da Bearer token giriş alanı tanımla
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        Name = "Authorization",
        Type = SecuritySchemeType.Http,
        Scheme = "Bearer",
        BearerFormat = "JWT",
        In = ParameterLocation.Header,
        Description = "Lütfen 'Bearer {token}' formatında giriniz. (örnek: Bearer eyJhbGciOiJIUzI1...)"
    });

    // Her endpoint'te Bearer zorunlu olsun
    options.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                }
            },
            Array.Empty<string>()
        }
    });
});


var app = builder.Build();

// Configure the HTTP request pipeline.
if (app.Environment.IsDevelopment())
{
    app.MapOpenApi();
    app.UseSwagger();
    app.UseSwaggerUI(options =>
    {
        options.SwaggerEndpoint("/swagger/v1/swagger.json", "ECommerce API V1");
        options.RoutePrefix = string.Empty;
    }); // set options to root directory of api
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

Burada yaptığım tek değişiklik DI ile AddSwaggerGen metoduna bazı ayarlar eklemek oldu.

Bu satırı:

C#
builder.Services.AddSwaggerGen();

Bunun ile değiştirdim:

C#

builder.Services.AddSwaggerGen(options =>
{
    // 🔒 Swagger'da Bearer token giriş alanı tanımla
    options.AddSecurityDefinition("Bearer", new OpenApiSecurityScheme
    {
        Name = "Authorization",
        Type = SecuritySchemeType.Http,
        Scheme = "Bearer",
        BearerFormat = "JWT",
        In = ParameterLocation.Header,
        Description = "Lütfen 'Bearer {token}' formatında giriniz. (örnek: Bearer eyJhbGciOiJIUzI1...)"
    });

    // Her endpoint'te Bearer zorunlu olsun
    options.AddSecurityRequirement(new OpenApiSecurityRequirement
    {
        {
            new OpenApiSecurityScheme
            {
                Reference = new OpenApiReference
                {
                    Type = ReferenceType.SecurityScheme,
                    Id = "Bearer"
                }
            },
            Array.Empty<string>()
        }
    });
});

Ek olarak sayfanın başına :

C#
using Microsoft.OpenApi.Models;

Paketimi dahil ettim ekledim (eğer yoksa)

Sonuç:

Peki biz burada ne yaptık.

Kısaca AddSecurityRequirement ve AddSecurityDefinition kullanarak endpointlerimize header üzerinden JWT gönderimini mümkün kıldık.

ASP.NET Core projenize JWT Entegrasyonu için bu yazıyı takip edebilirsiniz :

Yorumlar

“ASP.NET CORE SWAGGER AUTHORIZE BUTONU İLE JWT TEST ETMEK” için bir yanıt

  1. […] ASP.NET CORE SWAGGER JWT AUTHORIZE BUTONU ←Connection String Nasıl Oluşturulur?  MSSQL – EF Core Veritabanı Bağlantısı AutoMapper Nedir, Nasıl Kullanılır ASP.NET CORE + EF CORE Örnek Anlatım→ […]

Bir yanıt yazın

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