Home
Blog
Məqalə • 02 İyun, 2025 • 10 min

JWT & Web Servıces

Token, REST API, SOAP və WCF haqqında texniki qeydlər

JWT structure diaqramı

JWT (JSON Web Token) istifadəçinin autentifikasiya olunduğunu sübut edən, imzalanmış və öz-özünə ehtiva edən (self-contained) token formatıdır.

REST API-lərdə stateless autentifikasiya üçün ən geniş yayılmış üsuldur.

JWT nədir?

JWT, JSON formatında məlumat daşıyan və server tərəfindən imzalanan token-dir. Session saxlamaq əvəzinə, hər sorğuda token göndərilir və server onu yoxlayır. Bu, miqyaslana bilən (scalable) API arxitekturası üçün idealdır.

JWT strukturu

JWT üç hissədən ibarətdir, nöqtə (.) ilə ayrılır:

Header note Payload note Signature note
  • Header (Başlıq): Token tipi və imza alqoritmi (məs. HS256, RS256).
  • Payload (Faydalı yük): Claims (İddialar) - istifadəçi ID, rol, expiration (exp) və s.
  • Signature (İmza): Header + Payload + secret key ilə yaradılan imza; tokenin dəyişdirilmədiyini təsdiqləyir.

Bearer Token axını

  1. İstifadəçi login/password (və ya OAuth) ilə autentifikasiya olur.
  2. Server JWT yaradır və client-ə qaytarır.
  3. Client sonrakı sorğularda header göndərir: Authorization: Bearer <token>.
  4. Server tokeni yoxlayır (imza, expiration, claims) və sorğunu icra edir.

ASP.NET Core-da JWT

Microsoft.AspNetCore.Authentication.JwtBearer paketi ilə JWT autentifikasiya konfiqurasiya olunur. Program.cs-də issuer, audience və secret key təyin edilir; [Authorize] atributu ilə endpoint-lər qorunur.

Refresh token mexanizmi access token-in müddəti bitdikdə yeni token almaq üçün istifadə olunur - xüsusilə mobil və SPA tətbiqlərində vacibdir.

Bearer Flow arxiv kartı SOAP XML arxiv kartı REST JSON arxiv kartı WCF ABC arxiv kartı

Veb servislərə giriş

Veb Servislər, fərqli tətbiqlərin və ya sistemlərin bir şəbəkə və ya internet üzərindən əlaqə saxlamasına və məlumat paylaşmasına şərait yaradan standartlaşdırılmış üsullardır. Onlar zəif bağlı (loosely coupled) şəkildə hazırlanır, yəni bir servisin daxili reallaşdırılmasında (implementation) edilən dəyişikliklər digərlərinə təsir etmir.

Sorunsuz qarşılıqlı fəaliyyəti (interoperability) təmin etmək üçün XML və JSON kimi məlumat formatları ilə yanaşı, HTTP(S) və SOAP kimi standart protokollardan istifadə edirlər.

1. SOAP əsaslı servislər

SOAP əsaslı servislər (ənənəvi ASMX daxil olmaqla) həm serverin, həm də klientin ciddi şəkildə müəyyən olunmuş XML sxemlərinə tabe olmalı olduğu qəti, protokol yönümlü servislərdir. HTTP(S) üzərindən işləsələr də, nəqliyyat protokolu ilk növbədə strukturlaşdırılmış SOAP zərfi (envelope) üçün bir "daşıyıcı" rolunu oynayır.

Mesaj Axını: Klient Content-Type: text/xml başlığı ilə bir HTTP sorğusu göndərir. Sorğunun gövdəsi XML sənədinə bükülmüş faktiki SOAP mesajını ehtiva edir. Server bu faydalı yükü emal edir və eyni şəkildə digər bir SOAP XML zərfinə bükülmüş cavabı geri qaytarır.

PROTOKOL: SOAP

Simple Object Access Protocol məlumat mübadiləsi üçün qəti və standartlaşdırılmış strukturları təyin edən mesajlaşma protokoludur. WS*-Security dəstəyi sayəsində enterprise kommunikasiya üçün idealdır.

FORMAT: XML

SOAP üçün məcburi kodlaşdırma formatıdır. Hər mesaj Header və Body hissəsindən ibarətdir.

TCP

Bağlantı yönümlü, etibarlı və xəta yoxlaması olan protokoldur. HTTP, SMTP, FTP və SSH tərəfindən istifadə olunur.

UDP

Bağlantısız, daha sürətli və çatdırılma zəmanəti olmayan protokoldur. Canlı yayım və sürətin kritik olduğu tapşırıqlar üçün idealdır.

SOAP müqaviləsi: WSDL

WSDL (Web Services Description Language), rəsmi və maşın tərəfindən oxunabilən bir müqavilə rolunu oynayan XML sənədidir. O, servisin necə strukturlaşdırıldığını, hansı parametrləri gözlədiyini və hansı faydalı yük məlumat tiplərini qaytardığını müəyyən edir.

Klientlər adətən bu təsvirə ?wsdl URL suffiksi vasitəsilə müraciət edir. wsdl.exe və ya Visual Studio Service References kimi alətlər klient tərəfində avtomatik proksi sinifləri yaratmaq üçün bu müqaviləni oxuyur.

Korporativ təhlükəsizlik

Rəqəmsal İmzalar

Bütövlüyü və Doğruluğu (Integrity & Authenticity) təmin edir. Göndərən mesajı öz Private Key-i ilə imzalayır; qəbul edən isə Public Key vasitəsilə doğrulayır.

Şifrləmə

Məxfiliyi (Confidentiality) təmin edir. Göndərən XML qovşaqlarını qəbul edənin Public Key-i ilə şifrləyir və yalnız Private Key onu aça bilir.

HTTPS məlumatları yalnız tranzit zamanı qoruduğu halda, WS*-Security təhlükəsizlik tokenlərini və kriptoqrafiyanı birbaşa mesajın faydalı yükünün daxilinə yerləşdirir və çoxlu vasitəçilər üzərindən başdan-başa qorunmuş şəkildə saxlayır.

SOAP & XML kod nümunələri

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Header></soap:Header>
    <soap:Body>
        <GetUserDetails>
            <UserId>123</UserId>
        </GetUserDetails>
    </soap:Body>
</soap:Envelope>
<person>
    <name>Firuza Polad</name>
    <age>28</age>
    <isEmployed>true</isEmployed>
</person>

2. RESTful servislər & müasir API-lar

Zaman keçdikcə veb arxitekturaları böyük ölçüdə RESTful arxitekturalara doğru yönəldi. Bu yüngül servislər məlumat əməliyyatlarını yerinə yetirmək üçün standart HTTP metodlarından istifadə edir və çevik faydalı yükləri (ən çox JSON və ya XML) istehlakçılara qaytarır.

REST resursların idarə edilməsinə yönəlmiş arxitektur üslubdur. O, stateless xüsusiyyətə malikdir: hər bir sorğu tələb olunan bütün autentifikasiya meta-məlumatlarını daşımalıdır. JSON minimal overhead sayəsində veb və mobil tətbiqlərdə XML-i böyük ölçüdə qabaqlayan yüngül məlumat mübadiləsi formatıdır.

GETMəlumatı oxumaq: istifadəçilərin siyahısını və ya profilini gətirmək.
POSTYeni istifadəçi yaratmaq üçün qeydiyyat formasını göndərmək.
PUTMövcud istifadəçi profilinin üzərinə tamamilə yenisini yazmaq.
DELETEKonkret istifadəçi qeydini verilənlər bazasından silmək.
{
    "name": "Firuza Polad",
    "age": 28,
    "isEmployed": true,
    "skills": ["C#", ".NET Core", "SQL"],
    "address": {
        "city": "Baku",
        "zip": "AZ1000"
    }
}

3. WCF

Windows Communication Foundation, klassik .NET Framework ekosistemində servis yönümlü kommunikasiya arxitekturaları qurmaq üçün istifadə olunan vahid korporativ framework-dür.

WCF Servisi

Service Contract və Data Contract atributlarına malik əsas biznes məntiqi.

WCF Service Host

IIS, Self-Hosting (Konsol/Windows Servisi) və ya WAS.

Servis Klienti

Proksi klient siniflərindən istifadə edən istehlak layı.

ABC

Address, Binding və Contract WCF endpoint-lərinin əsas sütunlarıdır.

Address: unikal resurs URL-i. Binding: protokol tənzimləmələri (məsələn, basicHttpBinding və ya netTcpBinding). Contract: əməliyyat metodlarını təsvir edən interfeys.

WCF servisləri [ServiceContract][OperationContract] istifadə edir, çox-protokolludur və çevik hostinq imkanlarına malikdir. Ənənəvi ASMX servisləri isə əsasən [WebService], [WebMethod] və IIS hostinqi ilə məhdudlaşır.

4. Müasir .NET-də WCF

Server tərəfində WCF hostinqi müasir .NET (.NET 6/8+) versiyalarında rəsmi olaraq dəstəklənmir. Linux/macOS sistemlərində SOAP host etmək üçün SoapCore kimi icma kitabxanaları, müasir .NET Core-dan köhnə WCF-i çağırmaq üçün isə System.ServiceModel.Http paketi istifadə olunur.

5. API və Veb Servis arasındakı fərq nədir?

API (Application Programming Interface), proqram təminatı laylarının bir-biri ilə qarşılıqlı əlaqədə olmasına imkan verən qaydaları təsvir edən geniş termindir. Bir API mütləq şəkildə şəbəkə bağlantısı tələb etmir.

  • Lokal API-lar: Tək bir proses daxilindəki kod interfeysləri, məsələn bir .dll-ə istinad etmək.
  • Uzaqdan API-lar: REST, gRPC və ya SOAP endpoint-ləri kimi şəbəkə əsaslı kanallar.
SOAP REST WCF API müqayisəsi
Qeyd: Bu blogdakı bütün diaqramlar, qovluq strukturları və kod nümunələri Lucidchart, Canva və mənim IDE-m vasitəsilə yaradılmışdır. Töhfə vermək və ya təkmilləşdirmə təklif etmək istəyirsinizsə, mənimlə əlaqə saxlayın.