JWT Delphi Server

· Bileşenler

sgcWebSockets 4.4.8 sürümünden itibaren JWT Belirteçleri Sunucu Bileşenlerinde desteklenir.

TsgcHTTP_JWT_Server bileşeni, WebSocket protokolü kullanılırken WebSocket El Sıkışmasında veya HTTP protokolü kullanılırken HTTP Başlığı olarak alınan JWT belirteçlerinin kodunu çözmeye ve doğrulamaya olanak tanır.

Yapılandırma 

Bileşenin JWTOptions özelliğinde aşağıdaki özellikleri yapılandırabilirsiniz:

İmza bir Açık Anahtar kullanılarak doğrulanırsa (RS ve ES algoritmaları), değeri Algoritmanın PublicKey özelliğinde ayarlayın.

İmza bir Secret kullanılarak doğrulanırsa (HS algoritmaları), değeri Algoritmanın Secret özelliğinde ayarlayın.

JWT belirteçlerini doğrulamak için, yalnızca WebSocket/HTTP Sunucusunun Authentication.JWT.JWT özelliğine bir TsgcHTTP_JWT_Server örneği ekleyin.

oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.Port := 80;
oJWT := TsgcHTTP_JWT_Server.Create(nil);
oJWT.JWTOptions.Algorithms.RS.PublicKey.Text := 'public key here';
oServer.Authorization.Enabled := True;
oServer.Authorization.JWT.JWT := oJWT;
oServer.Active := True; 

Checks özelliği, JWT'nin Payload'ında bazı kontroller etkinleştirmeye olanak tanır; varsayılan olarak verilen tarihlerin geçerli olup olmadığını kontrol eder.

Olaylar 

JWT Doğrulama Belirteci akışını denetlemek için aşağıdaki olayları kullanın.

OnJWTBeforeRequest

Olay, yeni bir HTTP / WebSocket bağlantısı algılandığında ve herhangi bir doğrulama yapılmadan önce çağrılır. Bu bağlantı bir JWT Belirteci içerebilir veya içermeyebilir.

Bu Bağlantıyı JWT Doğrulaması kullanarak işlemek istemiyorsanız, yalnızca Cancel parametresini True olarak ayarlayın (bu bağlantının JWT doğrulamalarını atlayacağı anlamına gelir).

Varsayılan olarak, tüm bağlantılar JWT doğrulama sürecine devam eder.

OnJWTBeforeValidateToken

Olay, bağlantı bir Authorization belirteci içerdiğinde ve doğrulanmadan önce çağrılır.

Bu belirteci doğrulamak istemiyorsanız, yalnızca Cancel parametresini True olarak ayarlayın (bu bağlantının JWT doğrulamalarını atlayacağı anlamına gelir).

Varsayılan olarak, tüm bağlantılar JWT doğrulama sürecine devam eder.

OnJWTBeforeValidateSignature

Bu olay, belirtecin kodu çözüldükten sonra çağrılır; bu nedenle Header ve Payload parametrelerini kullanarak JWT'nin içeriğine erişebilirsiniz ve imza doğrulanmadan önce çağrılır.

Secret parametresi, imzayı doğrulamak için kullanılacak secret'tır ve JWTOptions özelliğinin PublicKey veya Secret değerini kullanır. Bu Belirteç başka bir secret ile doğrulanmalıysa, yeni değer Secret parametresine ayarlanabilir.

Varsayılan olarak, tüm imzalar doğrulanır

OnJWTAfterValidateToken

Olay, imza doğrulandıktan sonra çağrılır; Valid parametresi imzanın doğru olup olmadığını gösterir. Doğru değilse bağlantı kapatılır, aksi takdirde bağlantı devam eder.

Sağlanan argümanları kullanarak JWT'nin Header ve Payload içeriğine erişebilirsiniz.

JWT'yi doğrularken herhangi bir hata varsa, Error argümanında bildirilir.

OnJWTException

JWT Kod Çözme ve Doğrulama işlenirken herhangi bir istisna varsa, bu olay hatanın içeriğiyle çağrılır.