Skip to content

JWT tabanlı güvenli API erişimi sağlayan bir kimlik doğrulama sistemi. .NET Core ile geliştirilmiştir.(A secure API authentication system based on JWT. Built with .NET Core.)

Notifications You must be signed in to change notification settings

erenmulkoglu96/token-order-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Token Order API

Bu proje, JWT (JSON Web Token) tabanlı kimlik doğrulama sistemiyle güvenli API erişimi sağlayan bir .NET Web API uygulamasıdır. Kullanıcıların giriş yapmasını, token almasını ve bu token ile yetkili işlemler gerçekleştirmesini sağlar. Projede authentication, authorization, middleware, role-based erişim gibi temel güvenlik mekanizmaları uygulanmıştır.

(This project is a .NET Web API application that implements secure API access using JWT (JSON Web Token) based authentication. It allows users to log in, obtain a token, and perform authorized actions using that token. Key security mechanisms such as authentication, authorization, middleware, and role-based access control are implemented.)

Token yönetimi + sipariş sorgulama örneğidir.

(Token management + order query example.)

Token cache + zaman kontrolü + token yenileme stratejisi gerektiren gerçek dünya entegrasyonu olarak tasarlanmıştır.

(It is designed as a real world integration that requires token cache + time control + token refresh strategy.)

Minimal düzeyde, modüler yapısı vardır. Sınıflar ayrılmış ve test edilebilir olarak tasarlanmıştır. Zaman kontrolü vardır. Token süresini expires_in ile hesapladık. Rate limit kontrolü yaptık. 5 istekten sonra exception fırlatılıyor. Endpoint testleri için swagger UI görünümü yaptık. Şuanda açılıyor ve endpoint test edilebilir. Kod okunabilirliğini basit, düzenli ve iyi isimlendirilmiş olarak tasarladım. Gerçekçi senaryo uyumuyla beraber gerçek dış API entegrasyon senaryosuna çok uygundur.

(It has a minimal, modular structure. Classes are designed to be separated and testable. There is a time control. We calculated the token duration with expires_in. We made a rate limit control. An exception is thrown after 5 requests. We made a swagger UI view for endpoint tests. It is currently opening and the endpoint can be tested. I designed the code readability as simple, organized and well named. It is very suitable for the real external API integration scenario with realistic scenario compatibility.)

Hedef(Target)

  • Token’ı sadece gerektiğinde alıyoruz.
  • Her sipariş sorgusunda önce token süresini kontrol ediyor.
  • Token expired ise yeni alır.
  • 1 saat içinde maksimum 5 token isteği sınırını geçmeyecek.

Çözüm (Solution)

  • Token bilgisi (access_token + expiration) bellekte tutulur (örneğin Singleton ya da MemoryCache).

  • Sipariş API’si çağrılmadan önce:

  • A. Token süresi kontrol edilir.

    B. Süresi dolmuşsa (ya da 1 dakikadan az kalmışsa) yeni token alınır.

  • Token alma işlemi rate-limit altında tutulur.

Sonuç (Result)

  • TokenService ile token yönetimi yapılır.

  • OrderService ile token’ı kullanarak sipariş verisi çeker.

  • Token sadece gerektiğinde alınıyor.

  • Rate limit aşımı önleriz.

İstenenler ve Benim Uygulamam(Desired and My Application)

REST API'den sipariş listesini sorgulama /get-orders endpoint'i ile çalışmakta
Siparişten önce token alma TokenService.GetTokenAsync() ile önce token kontrol ediliyor
Token'da token_type, expires_in, access_token gibi parametrelerin parse edilmesi yapılıyor TokenResponse modeliyle JSON'dan çözülüyor
Saatte maksimum 5 token isteği kontrolü yapılıyor if (_requestCount >= 5) kontrolü ile mümkün
Süre bazlı token geçerliliği kontrolü DateTime.Now < _tokenExpiration kontrolü ile süresi izlenebilmekte
Anlatımlı kod, parçalanmış mantıklı sınıflar yapıldı TokenService + OrderService ayrımı ile SOLID prensiplerine uygun olarak tasarladım
Swagger ile Endpoint denemelerimiz çalışıyor ve test yapılabiliyor GET /get-orders endpoint Swagger’da görünüyor

Yazar (Author):

Eren Mülkoğlu

About

JWT tabanlı güvenli API erişimi sağlayan bir kimlik doğrulama sistemi. .NET Core ile geliştirilmiştir.(A secure API authentication system based on JWT. Built with .NET Core.)

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages