Erzeugen von json web token

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Erzeugen von json web token

Beitrag von Philip »

Hallo,

Ich will meine xBase++ Anwendung ins Web bringen, und dafür würde ich zu Authentifizierung json web token verwenden, leider finde ich in keinen Forum etwas darüber, gibt es eine Methoden Token zu erstellen und validieren in xBase++?

Lg
Philip
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Tom »

JWT ist im Netz eigentlich gut erklärt, und wenn Du ChatGPT fragst, bekommst Du eine sehr ausführliche Antwort. Das geht aber auch z.B. hier: https://de.wikipedia.org/wiki/JSON_Web_Token

Im Prinzip kann man die Idee aber auch einfach als Basis für eigene Strukturen nutzen. Bei der Anmeldung in der Web-App erzeugt diese irgendein Token (z.B. eine UUID), und diese UUID muss immer als Parameter verwendet werden, wenn irgendein Endpoint im Backend angesprochen wird (bevorzugt im Header). Das Backend schaut dann, ob dieser Token zu einem aktiven Benutzer passt (inkl. Time-Out usw.) und lässt ihn nur dann durch. Das ist ziemlich simpel. Man kann die Idee aber auch noch erweitern.
Herzlich,
Tom
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

Danke, die Theorie dazu ist mir klar, ich habe auch schon duzende Projekte damit realisiert, aber die Berechnung/Erstellung des jwt ist nicht ganz trivial und meine Frage ist, kann xBase++ jwt erzeugen, gibt es dazu eine Bibliothek o.ä.? Also um aus json Daten das Token erzeugen und dann eben auch wieder verifizieren? Da ich meine xBase Anwendung ins Web bringen will und jwt zur Authentifizierung benutzen will. Aber nicht den Berechnungsalgorithmus implementieren will.

LG
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Jan »

Moin Philip,

Du könntest mal bei Alaska anfragen. Die haben ein JWT-Asset in der Pipeline. Keine Ahnung wann das wirklich kommen soll. Aber vielleicht können die Dir schon irgend was anbieten.

Übrigens: Das heißt Xbase++, da das ein Eigenname ist. Also großes X, kleines b.

Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

Aja vielen Dank.

Aber gibt es auch keine Vergleichbaren Methoden zur Authentifizierung/Tokenerstellung? Bin ich der erste der eine Webanwendung mit Xbase++ realisieren will?
Ich helfe dabei ein CRM System Webtauglich zu machen und stoß an allen Enden an Systemgrenzen, wenn es um Web geht.


Lg
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Tom »

Hallo, Philip.

Wir bauen seit Jahren Webanwendungen, aber wir realisieren das meiste, was Authentifizierung, Verschlüsselung usw. anbetrifft, mit propreitären Techniken.

Ich will mich aber auch mit JWT befassen, möglicherweise noch im Frühjahr. Es ähnelt aber der Basic-Authentication (JWS), dann wird ein bisschen Base64-Encoding betrieben und man muss ein bisschen mit Cookies herumdaddeln (was bei meinen Backends automatisch von Xb2Net erledigt wird).

Hast Du mal ChatGPT gebeten, Dir ein bisschen Beispielcode zu erzeugen? Der kann das.
Herzlich,
Tom
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Tom »

Ach so, und ich verwendet Chilkat. Da ist das eingebaut:

https://www.chilkatsoft.com/refdoc/xChilkatJwsRef.html
Herzlich,
Tom
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

Ich habe leider auch die Erfahrung, dass Chatgpt mit zu wenig Daten von Xbase++ gefüttert wurde um mir da eine Lösung zu liefern, schlussendlich ist es auch nur mit Daten die im Netz sind trainiert.
Base64 encoding ist ja in keiner Hinsicht eine Verschlüsselung, was ich brauche wäre eine Verschlüsselungsmethode wie RSA, HS256 o.ä. um jwt zu signieren, bietet in diese Richtung Xbase++ etwas an?

Lg
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Tom »

Chilkat macht das. Hier gibt es Beispiele in Foxpro (die lassen sich leicht nach Xbase++ übertragen), die das zeigen: https://www.example-code.com/foxpro/jws.asp
Herzlich,
Tom
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

Danke, muss ich mir gleich mal anschauen.
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

Tom wenn ihr seit Jahren Webanwendungen macht, hast du vielleicht auch einen Tipp, oder auch gerne jeder andere, wie ich eine bestehende Anwendung fürs Web anbieten kann?
Es handelt sich um ein CRM System dass derzeit jeder Mitarbeiter lokal auf seinen Pc ausführt und eben jeder dann auch beliebig viel Fenster offen (verschiedene .exe) haben kann. Mein Gedanke war für jedes Fenster einen Websocket Server erzeugen und dann Browserfenster jeweils zu Verbinden pro Fenster. Websocket daher, dass jederzeit auch der Server Updates schicken kann und den Overhead von Http Requests loszuwerden. CXP ist für mich keine Option weil es zu unflexibel ist. Aber soweit ich gesehen haben, werden keine Instanzen vom WebSocket Server erzeugt, bzw kann ich die nicht verwalten das die reine Klassendefinition reicht um die Socket zum Laufen zu bringen (sowas habe ich noch nie gesehen). Das Problem ist auch dass man so nicht verschiedene Namen Verwenden kann da der Name von Websockets Endpunkten nicht dynamisch ist. Daher ist die einzige Möglichkeit die mir in den Sinn kommt eine Zentrale Einheit die einen Websocket mit jeden Client (Browser) und jeden ehemaligen Anwendungsfenster (derzeit unabhängige .exe) verwaltet und entsprechend Nachrichten durch mapped. Was mir nicht optimal erscheint aber als einzige Möglichkeit scheint. Über HttpRequests würde es ähnlich klappen aber eben nicht so performant. Die Daten die ausgetauscht werden sind nur Feldinhalte und Feldpositionen als json und das Frontend baut so die selbe Oberfläche wie die Gui ehemals.
Die beste Lösung wäre jede exe erzeugt einen Websocket server (gekennzeichnet mit id) und jedes Browserfenster verbindet sich direkt damit, authentifiziert sich und tauscht Daten aus. Ein Refresh im Browserfenster verbindet sich mit dem selben Socket wieder. Aber so kann ich das nicht umsetzen scheint mir.

Lg
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Tom »

Hallo, Philip.

Wir bauen Webanwendungen in Ergänzung unserer eigenen Anwendungen, meistens als Portalsystematiken. Dazu verwenden wir schon von Beginn an Xb2.Net und in Ergänzung ein paar Frameworks wie Tabler, Bootstrap und andere. Das Socket-Management macht Xb2.Net für uns. Das Session-Management basiert auf den Beispielen. 2FA haben wir selbstgebaut, und ein paar andere Sachen auch.

Es gibt aber auch andere Ansätze. So hat z.B. Chris, ein Belgier, der seit Ewigkeiten mit Xbase++ unterwegs ist, ein Angular-basiertes Framework gebaut/bauen lassen, das explizit für Xbase-Anwendungen ausgelegt ist und es erlaubt, ziemlich schnell Webanwendungen zu bauen. Das Framework heißt "BOA" und man kann es bei ihm kaufen (es gibt auch eine Testversion). Hier kann man sehen, wie es funktioniert: https://boa-platform.com/manual/index.htm#

Mit CXP habe ich mich nur kurz beschäftigt, als es noch keinen Xbase-eigenen HttpEndpoint gab, und ich wollte nicht mit Apache oder dem IIS herumeiern. Bislang reicht uns das, was wir mit Xb2.Net und den genannten Frameworks machen können. Für unsere Mobilanwendungen arbeiten wir ganz anders, nämlich mit React Native, aber das Backend dazu basiert auch auf Xb2.Net.
Herzlich,
Tom
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

Hallo danke für die Antwort, ich sehe ich habe noch einen langen Weg vor mir. Ich baue auch derzeit das frontend mit react js auf.
Das Problem, ich will eine bestehende Anwendung komplett ins Web bringen, und parallel noch offline anbieten heißt mein Backend ist stateful was für api Anwendungen eher untypisch ist, aber anders sehen ich keine Möglichkeit ohne riesige umbauten.

Mit Xb2.Net bin ich noch gar nicht vertraut, welche Beispiele meinst du da, was kann ich mir da anschauen? Bin für jeden Tipp dankbar der mit bei der Authentifizierungssache hilft.

Eine weitere Frage, in der Zwischenzeit bin ich dran mit dem mir mehr vertrauten C++ das JWT Thema zu umschiffen, hätte mir einen JWTManager geschrieben der etwa so aussieht:
class JWTManager {
public:
EXPORT JWTManager(const std::string& secret) : secret(secret) {}

std::string EXPORT createToken(const std::string payload);
bool EXPORT verifyToken(const std::string& token);
std::string EXPORT getTokenData(const std::string& token);

private:
std::string secret;
};

Ist es möglich die gebaute DLL in Xbase++ einzubinden und die Klasse in XBase++ zu verwenden? Wenn ja wie schaff ich das Hexenwerk? Auch interessant diese DLL wiederum nutzt OpenSSL. In C++ klappt alles wunderbar, wenn ich das in Xbase++ integrieren könnt, wäre das ein Traum.

LG
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Tom »

Ich hatte einen Link zu Chilkat gepostet. Das ist eine sehr umfangreiche, starke und robuste ActiveX-Library, die sich sehr, sehr simpel in Xbase++ einbinden lässt. Und die beherrscht u.a. JWT.

In Xb2.Net gibt es das "TimeClock"-Sample, auf dessen Basis wir vor, keine Ahnung, zehn, zwölf Jahren damit angefangen haben, unsere Portalsysteme aufzubauen, wobei es vor allem um Sessionmanagement ging. Was davon noch übrig ist, kann ich nicht abschätzen.

Und ich muss noch einmal auf BOA verweisen. Chris hatte die gleiche Aufgabenstellung wie Du und hat sich ein Angular-basiertes Framework bauen lassen, das mit einigen Standards daherkommt und es erlaubt, sehr schnell elegante und robuste Online-Anwendungen (BOA ist ein Akronym für "Build Online Applications") zu bauen. Unabhängig hiervon würde ich auch eher zu Angular als zu React in diesem Bereich tendieren, obwohl wir selbst React für Mobilzeug einsetzen.
Herzlich,
Tom
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

okay, vielen dank erstmal, Chilkat bin ich grad am reinlesen, aber nur für jwt lohnt es sich nicht, denn anstatt dafür externe Software zu kaufen, binde ich lieber meinen C++ code ein und wenn es als dll nicht klappt dann bau ich mir eine exe die ich aufrufe^^
Aber generell wäre ein c++ dll einbinden sehr praktisch, da es einfach Tür und Tor für öffnet Xbase++ zu erweitern.

Wo finde ich dieses "TimeClock"-Sample?

Und ja BOA sieht sehr cool aus, muss das mal mit meiner Kollegin besprechen, leider löst es nur das Frontend Problem und da sehe ich eindeutig unsere Stärke und kein Problem aber der Kosten-Nutzen Faktor wird ausschlaggebend sein.

LG
Benutzeravatar
Slavko
Rookie
Rookie
Beiträge: 9
Registriert: Mi, 20. Dez 2023 11:03
Wohnort: Negotin
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Slavko »

Hallo Philip,

Die PowerCrp-Bibliothek enthält alle kryptografischen Algorithmen, die Sie zum Erstellen von JWT in Xbase++ benötigen (HMAC, RSA-Verschlüsselung, Signieren, Verifizieren). Lesen Sie mehr unter diesem Link:
https://www.sd-softdesign.com/powercrp.htm

Die PoweWeb-Bibliothek enthält alle Web-UI-Tools, die Sie zum Erstellen von Webanwendungen jeglicher Art in Xbase++ benötigen. Lesen Sie mehr unter diesem Link:
https://www.sd-softdesign.com/powerweb.htm

Die PowerCom-Bibliothek enthält alle Server-/Client-Tools, die Sie zum Erstellen von WebSocket- und HTTP-Intranet- und Internet kommunikation in Xbase++benötigen. Lesen Sie mehr unter diesem Link:
https://www.sd-softdesign.com/powercom.htm
Best regards,

Slavoljub Damnjanovic
SD-SoftDesign, Alaska Software Technology Partner
https://www.sd-softdesign.com
https://www.sd-softdesign.rs
Benutzeravatar
Slavko
Rookie
Rookie
Beiträge: 9
Registriert: Mi, 20. Dez 2023 11:03
Wohnort: Negotin
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: Erzeugen von json web token

Beitrag von Slavko »

Philip,

Sie können die Xbase++ C-API-Schnittstelle verwenden, um C++ DLL in Xbase++-Code zu integrieren.
Best regards,

Slavoljub Damnjanovic
SD-SoftDesign, Alaska Software Technology Partner
https://www.sd-softdesign.com
https://www.sd-softdesign.rs
Benutzeravatar
azzo
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 483
Registriert: So, 28. Mär 2010 19:21
Danksagung erhalten: 11 Mal

Re: Erzeugen von json web token

Beitrag von azzo »

Hallo Freunde,
es gibt für harbour eine lib:

https://github.com/matteobaccan/HarbourJwt

Sollte auch mit xbase funktionieren.
LG
Otto
Philip
Rookie
Rookie
Beiträge: 9
Registriert: Fr, 05. Jan 2024 14:15

Re: Erzeugen von json web token

Beitrag von Philip »

Hallo, vielen Dank für die Antworten, vorallem die anderen Bibliotheken/Projekt sind sehr interessant. Ich werde mich da mal einarbeiten.
Danke
Dominik Krebs
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 200
Registriert: Mo, 15. Apr 2019 16:19
Hat sich bedankt: 12 Mal
Danksagung erhalten: 4 Mal

Re: Erzeugen von json web token

Beitrag von Dominik Krebs »

azzo hat geschrieben: Do, 11. Jan 2024 12:01 Hallo Freunde,
es gibt für harbour eine lib:

https://github.com/matteobaccan/HarbourJwt

Sollte auch mit xbase funktionieren.
LG
Otto
Das ist ja cool, arbeitest du in Xbase++ damit?
Wie binde ich das ein?
Gruß Dominik
Antworten