TsgcHTTP_JWT_Client

JWT istemcisi kullanırken hangi openSSL kütüphanelerini kullanacağınızı yapılandırın.

Giriş

TsgcHTTP_JWT_Client bileşeni, bir WebSocket İstemcisine veya HTTP/2 istemcisine ekli JWT Token'larını kodlamanıza ve imzalamanıza olanak tanır, token otomatik olarak bir Authorization Bearer Token Başlığı olarak gönderilir.

Configuration

JWT değerlerini JWTOptions özelliklerinde yapılandırabilirsiniz, 2 ana özellik vardır: Header ve Payload, yalnızca gerekli her özellik için değerleri ayarlayın.

 

İmza bir Özel Anahtar kullanılarak şifrelenmişse (RS ve ES algoritmaları), değeri Algoritmanın PrivateKey özelliğinde ayarlayın.

İmza bir Secret (HS algoritmaları) kullanılarak şifrelenmişse, değeri Algoritmanın Secret özelliğinde ayarlayın.

 

OpenSSL Options

JWT istemcisi kullanırken hangi openSSL kütüphanelerini kullanacağınızı yapılandırın.

 

OpenSSL_Options: openSSL kütüphanelerinin yapılandırması.

APIVersion: hangi OpenSSL API'sinin kullanılacağını tanımlamaya olanak tanır.

oslAPI_1_0: API 1.0 OpenSSL kullanır, Indy tarafından desteklenen en son sürümdür

oslAPI_1_1: API 1.1 OpenSSL kullanır, özel Indy kütüphanemizi gerektirir ve OpenSSL 1.1.1 kütüphanelerini (TLS 1.3 desteğiyle) kullanmanıza olanak tanır.

oslAPI_3_0: API 3.0 OpenSSL kullanır, özel Indy kütüphanemizi gerektirir ve OpenSSL 3.0.0 kütüphanelerini (TLS 1.3 desteğiyle) kullanmanıza olanak tanır.

LibPath: burada openSSL kütüphanelerinin nerede bulunduğunu yapılandırabilirsiniz

oslpNone: bu varsayılandır, OpenSSL kitaplıkları ikili dosyanın bulunduğu klasörde veya bilinen bir yolda olmalıdır.

oslpDefaultFolder: tüm IDE kişilikleri için kütüphanelerin bulunması gereken openSSL yolunu otomatik olarak ayarlar.

oslpCustomFolder: seçilen seçenek buysa, tam yolu LibPathCustom özelliğinde tanımlayın.

LibPathCustom: LibPath = oslpCustomFolder olduğunda openSSL kütüphanelerinin bulunduğu tam yolu burada tanımlayın.

UnixSymLinks: Unix sistemlerinde SymLinks yüklemesini etkinleştirin veya devre dışı bırakın (varsayılan olarak etkindir, OSX64 hariç):

oslsSymLinksDefault: OSX64 dışında varsayılan olarak etkindir (MacOS Monterey'den sonra kütüphaneyi sürüm olmadan yüklemeye çalışırken başarısız olur).

oslsSymLinksLoadFirst: SymLinks'i yükle ve bunu sürüm kitaplıklarını yüklemeyi denemeden önce yap.

oslsSymLinksLoad: Sürüm kütüphanelerini yüklemeyi denedikten sonra SymLinks'i yükle.

oslsSymLinksDontLoad: SymLink'leri yükleme.

 

Custom Headers

Header ve Payload özellikleri, bir JWT oluşturmak için kullanılan en yaygın header'ları içerir, ancak AddKeyValue yöntemini çağırarak ve Key ve Value'yu parametre olarak geçirerek daha fazla header ekleyebilirsiniz.

Örnek: JWT Header'a adınızla yeni bir kayıt eklemek istiyorsanız, aşağıdaki yöntemi kullanın

 


    Header.AddKeyValue('name', 'John Smith');

 

Özellikleri yapılandırdıktan sonra, JWT'yi oluşturmak için yalnızca Sign yöntemini çağırın ve JWT'nin değerini döndürür.

 

WebSocket Client ve JWT

TsgcWebSocketClient, WebSocket sunucularına bağlanırken JWT kullanımına izin verir, yalnızca yeni bir JWT istemcisi oluşturun ve Authentication.Token.JWT özelliğine atayın.

 


    oClient := TsgcWebSocketClient.Create(nil);
    oClient.URL := 'ws://www.esegece.com:2052';
    
oJWT := TsgcHTTP_JWT_Client.Create(nil); oJWT.JWTOptions.Header.alg := jwtRS256; oJWT.JWTOptions.Payload.sub := '1234567890'; oJWT.JWTOptions.Payload.iat := 1516239022;
oClient.Authentication.Enabled := True; oClient.Authentication.URL.Enabled := False; oClient.Authentication.Token.Enabled := True; oClient.Authentication.Token.JWT := oJWT; oClient.Active := True;

 

HTTP Clients and JWT

TsgcHTTP2Client ve TsgcHTTP1Client, HTTP/2 sunucularına bağlanırken JWT kullanımına olanak tanır, yalnızca yeni bir JWT istemcisi oluşturun ve Authentication.Token.JWT özelliğine atayın.

 


    oHTTP := TsgcHTTP2Client.Create(nil);
    
oJWT := TsgcHTTP_JWT_Client.Create(nil); oJWT.JWTOptions.Header.alg := jwtRS256; oJWT.JWTOptions.Payload.sub := '1234567890'; oJWT.JWTOptions.Payload.iat := 1516239022;
oHTTP.Authentication.Token.JWT := oHTTP; oHTTP.Get('https://your.api.com');

 

Expiration

Authorization Token, bir HTTP istemcisi kullanarak bir HTTP isteği gönderdiğiniz her seferinde yeniden oluşturulabilir veya süresi dolana kadar birkaç kez yeniden kullanılabilir.

Örnek: Token kullanarak Apple APNs'i çağırmak, token'ın en az 20 dakika ve en fazla 1 saat boyunca yeniden kullanılmasını gerektirir. Token'ın ne zaman sona ereceği saniyeyi ayarlamak için RefreshTokenAfter Özelliğini kullanın, örneğin 30 dakika sonra.


    RefreshTokenAfter = 60 * 40.

 

JWT İmzası Oluştur

WebSocket veya HTTP Protokolünü kullanmayan uygulamalarda kullanmak için, ya da üçüncü taraf uygulamalardan bileşenler kullanıyorsanız ve yalnızca JWT Token'a ihtiyacınız varsa, JWT İmzalarını elle oluşturabilirsiniz.

 

JWT İmzasını elde etmek için, yalnızca JWT İstemcisinin yeni bir örneğini oluşturun ve özellikleri el ile doldurun, tüm özellikler ayarlandığında, Sign yöntemini çağırın ve JWT Token'ını döndürecektir.

 


    oJWT := TsgcHTTP_JWT_Client.Create(nil);
    // ... header
    oJWT.JWTOptions.Header.alg := jwtHS256;
    oJWT.JWTOptions.Algorithms.HS.Secret := '79F66F1E-E998-436B-8A0A-3E5DEFA4FD9E';
    // ... payload
    oJWT.JWTOptions.Payload.jti := '9B66FB94-B761-42B1-A1AF-3C44233DBE87';
    oJWT.JWTOptions.Payload.iat := 1630925658;
    oJWT.JWTOptions.Payload.iss := '2886EC7547B7BA6A9009';
    oJWT.JWTOptions.Payload.exp := 1630933158;
    // ... custom payload values
    oJWT.JWTOptions.Payload.ClearKeyValues;
    oJWT.JWTOptions.Payload.AddKeyValue('origin', 'www.yourwebsite.com');
    oJWT.JWTOptions.Payload.AddKeyValue('ip', '69.39.46.178');
    // ... get JWT Token
    ShowMessage(oJWT.Sign);

 

Başvuru