Modern backend dünyasında artık tek bir uygulama değil; birbirleriyle konuşan, bağımsız deploy edilebilen servisler konuşuluyor. IdentityServer, JWT ve Mikroservis mimarisi; kurumsal ölçekte güvenli, ölçeklenebilir ve profesyonel backend sistemlerinin temel taşlarından biri haline gelmiş durumda.
Bu yazıda yer alan mimariyi zihninizde canlandırmanız için üstteki görseli düşünebilirsiniz: Ortada kimlik ve yetkilendirme merkezi, etrafında token ile konuşan mikroservisler ve bu yapıyı saran güvenli bir iletişim ağı. Ancak mikroservis sayısı arttıkça kimlik doğrulama (authentication) ve yetkilendirme (authorization) konuları mimarinin en kritik parçalarından biri haline geliyor.
Bu noktada IdentityServer ve JWT (JSON Web Token), mikroservis mimarisinde güvenliğin omurgasını oluşturan iki temel yapı olarak karşımıza çıkıyor.
Bu yazıda hem mimari bakış açısını hem de gerçek .NET kod örneklerini birleştirerek IdentityServer, JWT ve Mikroservis mimarisini modül modül, üretim ortamına yakın bir yaklaşımla ele alacağız
🛡️Mikroservis Mimarilerinde Güvenlik Problemi
Mikroservis mimarisinde her servis:
- Kendi veritabanına sahiptir
- Bağımsız olarak deploy edilir
- Tek bir iş sorumluluğunu üstlenir
Bu yapı esneklik sağlarken şu temel soruyu da beraberinde getirir:
🧠 Kullanıcı kimliğini kim doğrulayacak ve diğer servisler bunu nasıl güvenilir şekilde bilecek?
Her mikroservisin kendi içinde kullanıcı doğrulaması yapması:
- Kod tekrarına
- Güvenlik açıklarına
- Yönetilemeyen karmaşıklığa
neden olur. Bu yüzden mikroservis mimarilerinde merkezi bir kimlik doğrulama servisi kaçınılmazdır.
🧩Mimari Genel Bakış
Bu yazı boyunca ele alacağımız örnek mimari şu bileşenlerden oluşur:
- IdentityServer → Kimlik doğrulama ve token üretimi
- JWT → Servisler arası güvenli ve stateless iletişim
- API Gateway (opsiyonel) → Merkezi giriş ve güvenlik katmanı
- Mikroservisler → User, Order, Product vb.
Mikroservisler kullanıcıyı tanımaz, token'ı tanır.
🔑IdentityServer Nedir?
IdentityServer, OAuth 2.0 ve OpenID Connect standartlarını destekleyen bir Identity Provider (Kimlik Sağlayıcı) çözümüdür.
Temel sorumlulukları:
- Kullanıcı kimlik doğrulaması
- Access Token üretimi
- Yetkilendirme kurallarının merkezi yönetimi
Mikroservis mimarisinde güvenliğin tek bir noktadan yönetilmesini sağlar.
IdentityServer Kurulumu
📦Gerekli NuGet Paketleri
dotnet add package Duende.IdentityServer
dotnet add package Microsoft.AspNetCore.Identity.EntityFrameworkCoreProgram.cs — Temel Konfigürasyon
builder.Services.AddIdentityServer()
.AddInMemoryClients(Config.Clients)
.AddInMemoryApiScopes(Config.ApiScopes)
.AddInMemoryIdentityResources(Config.IdentityResources)
.AddTestUsers(TestUsers.Users);Production ortamlarında InMemory yerine veritabanı tercih edilmelidir.
Client ve Scope Tanımları
public static IEnumerable<ApiScope> ApiScopes => new List<ApiScope>
{
new ApiScope("catalog_api", "Catalog API")
};
public static IEnumerable<Client> Clients => new List<Client>
{
new Client
{
ClientId = "client_app",
AllowedGrantTypes = GrantTypes.ClientCredentials,
ClientSecrets = { new Secret("secret".Sha256()) },
AllowedScopes = { "catalog_api" }
}
};Bu yapı sayesinde:
- Client hangi API'ye erişebileceğini bilir
- Yetkilendirme scope bazlı yapılır
🪪JWT (JSON Web Token) Nedir?
JWT, kullanıcıya veya client'a ait bilgilerin imzalanmış ve taşınabilir bir token içinde saklanmasını sağlayan bir standarttır.
Bir JWT üç bölümden oluşur:
- Header → Algoritma bilgisi
- Payload → Claim ve scope bilgileri
- Signature → Token bütünlüğü
JWT'nin en büyük avantajı stateless olmasıdır. Sunucu tarafında session tutulmaz.
🧾Token Akışı (Authentication Flow)
- Client, IdentityServer'a kimlik doğrulama isteği gönderir
- IdentityServer doğrulama yapar
- Başarılı olursa JWT Access Token üretir
- Client bu token ile mikroservislere istek atar
Örnek token payload:
{
"iss": "https://localhost:5001",
"scope": "catalog_api",
"exp": 1710000000
}Mikroservis Tarafında JWT Doğrulama
Program.cs
builder.Services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.Authority = "https://localhost:5001";
options.TokenValidationParameters.ValidateAudience = false;
});
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("CatalogPolicy", policy =>
{
policy.RequireClaim("scope", "catalog_api");
});
});Endpoint Yetkilendirme
[Authorize(Policy = "CatalogPolicy")]
[HttpGet]
public IActionResult GetProducts()
{
return Ok("Yetkili erişim başarılı");
}- Token yoksa → 401 Unauthorized 🔑❌
- Scope yoksa → 403 Forbidden🚫
🚪API Gateway Kullanımı
API Gateway:
- Token doğrulamasını merkezi yapar
- Yetkisiz istekleri mikroservislere ulaşmadan engeller
- Logging ve rate limiting sağlar
Bu sayede mikroservisler yalnızca iş mantığına odaklanır.
✅Avantajlar
- Merkezi kimlik yönetimi🪪🔐
- Mikroservis bağımsızlığı
- Yüksek performans (stateless yapı)⚡
- OAuth 2.0 / OpenID Connect uyumluluğu
🔍Sonuç
Mikroservis mimarisinde güvenlik, sonradan eklenen bir detay değil, mimarinin temel bir parçasıdır.
IdentityServer ve JWT birlikte kullanıldığında:
- Güvenli
- Ölçeklenebilir
- Kurumsal
bir mikroservis altyapısı ortaya çıkar.
.NET ekosisteminde profesyonel mikroservis mimarileri hedefliyorsanız, IdentityServer + JWT ikilisi güçlü ve doğru bir tercihtir.🚀