![]()
Swagger
Yazdığımız web servislerde hangi kullanılan methodlar ve paramereleri bunun yanında testler ve sonuçları sık yapılan işlerimiz arasındadır ve bunların yanında güncelleme yapıldığında onun son halinin kullanıcıya yansıması oldukça önemlidir. İşte bütün bunları bize sağlayan Swagger API ler için kullanışlı ve görsel bir arayüz sunmaktadır.
Swagger , uygulamalarımızın kodlarına erişmeden RestApi lerin özelliklerini görmesine, incelemesine ve anlamasına olanak sağlar. Dinamik bir dokumasyon aracıdır yani yeni bir controller yada method eklediğinizde onları json dosyasında tutar parametreleri ile beraber görsel oalrak Swagger-UI ile bize sunar.
Swagger’ ı .NetCore projemize entegre etmek için öncelikle Swashbuckle.AspNetCore NuGet paketini kuruyoruz. Son versiyonlarda(.Net 8.0 gibi) API projesi oluştururken ekli halde gelmektedir.
Eski versiyonlar için yada nereye hangi kodların yazılması gerekitiği bilinilmesi için adım adım bakalım.
Önce , program.cs içerisine AddSwaggerGen() ekliyoruz ama burdada version . title , shema gibi ayarlamaları aşağıdaki giib yapıyoruz
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
builder.Services.AddSwaggerGen(); //ayarlamaları builder.Services.AddSwaggerGen(c => { c.SwaggerDoc(“v1”, new OpenApiInfo { Title = “My API”, Version = “v1” }); var securityScheme = new OpenApiSecurityScheme { Name = “Authorization”, Type = SecuritySchemeType.Http, Scheme = “bearer”, BearerFormat = “JWT”, In = ParameterLocation.Header, Description = “Enter ‘Bearer’ and your valid JWT token” }; var securityRequirement = new OpenApiSecurityRequirement { { new OpenApiSecurityScheme { Reference = new OpenApiReference { Id = “Bearer”, Type = ReferenceType.SecurityScheme } }, new string[] {} } }; c.AddSecurityDefinition(“Bearer”, securityScheme); c.AddSecurityRequirement(securityRequirement); }); |
Sonra hemen altında request kodları ayzılır aşağıda;
|
1 2 3 4 5 6 7 |
if (app.Environment.IsDevelopment()) { app.UseSwagger(); app.UseSwaggerUI(); } |
Not: Eski versiyonlarda Startup.cs içerisinde ConfigureServices e services.AddSwaggerGen() ve Configure da app.UseSwagger() ve app.UseSwaggerUI() yazılır.
Sonra çalıştırıdğında Actionlarla beraber görsel arayüz gelecektir

Execute yaptığında da sonucu gösterecektir

JWT Token
JSON Web Token (JWT), web uygulamaları için güvenli bir yetkilendirme yöntemidir. JWT, kullanıcı yetkilendirmesi ile ilgili bilgileri içeren token şeklinde verileri taşır ve bu verileri kullanarak uygulamalar arasında güvenli bir şekilde veri akışı sağlar. JWT, header, payload ve signature oluşur.
Bu bölümlerin kısaca ne anlama geldiklerine bakalım.
Header: Algoritma ve token tipini belirtir. Aşağıdaki şekilde iki tane değer alır. Burada dikkat etmemiz gereken kısım ise hangi algoritmayı kullanacağımızdır.
|
1 2 3 4 5 6 |
{ “alg”: “HS256”, “typ”: “JWT” } |
Payload: Kullanıcı bilgileri ve ek bilgiler içerir. Burada dilediğiniz bilgileri tutmanızı sağlar. Kullanıcının token’da tutulmasını istediğiniz bilgileri girebiliriniz.
|
1 2 3 4 5 6 7 |
{ “sub”: “1234567890”, “name”: “John Doe”, “iat”: 1516239022 } |
Signature: Token’ın bütünlüğünü doğrulamak için kullanılır. Bu kısım, gelen token’ı doğrulamak için kullanılır. İstek atıldığınıda header’daki değeri alır ve sizin belirlediğiniz gizli kelimeyle belirlediğiniz algoritmaya göre çözümlemeye çalışır.
|
1 2 3 4 5 6 7 8 |
HMACSHA256 ( base64UrlEncode(header) + “.” + base64UrlEncode(payload), your–256–bit–secret ) |
Önce Microsoft.AspNetCore.Authentication.JwtBearer V_7.0 paketini kuruyoruz
Sonra Program.cs de ayarların yapıldığı kod bloğunu yazadım aşağıda;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = “your-app”, ValidAudience = “your-app”, IssuerSigningKey = new SymmetricSecurityKey( Encoding.UTF8.GetBytes(“your-secret-key”)) }; }); builder.Services.AddAuthorization(); |
AddJwtBearer login olunduğunda Token oluşturan middleware ekler.
Sonra controller ekleyerek login olduktan sonra Token oluşturulan kodları yazdım aşağıda;
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
private readonly string jwtKey = “your-very-strong-secret-key”; [HttpPost(“login”)] public IActionResult Login([FromBody] LoginDto login) { // ⚠️ Replace with your own user validation if (login.Username != “admin” || login.Password != “password”) return Unauthorized(); // Create token var claims = new[] { new Claim(ClaimTypes.Name, login.Username), new Claim(ClaimTypes.Role, “Admin”) // Optional }; var signinKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtKey)); var creds = new SigningCredentials(signinKey, SecurityAlgorithms.HmacSha256); var token = new JwtSecurityToken( issuer: “your-app”, audience: “your-app”, claims: claims, expires: DateTime.UtcNow.AddHours(1), signingCredentials: creds); return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) }); } |
Oluşan Token:

Tabi ben burada konu uzamaması için gerçek zamanlı bir login, register işlemi yapmadım.
Kodlara adresinden ulaşabilirisniz.
Sağlıcakla kalın…..








Bir yanıt yazın