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 (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ı
- İstifadəçi login/password (və ya OAuth) ilə autentifikasiya olur.
- Server JWT yaradır və client-ə qaytarır.
- Client sonrakı sorğularda header göndərir:
Authorization: Bearer <token>. - 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.
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.
{
"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] və [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.