[RELEASE] MTA:SA JWT Module - WIP

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [RELEASE] MTA:SA JWT Module - WIP

      Hallo,

      Wir, das eXo-Reallife Team, möchten heute ein Modul releasen, dass auch auf unserem Server Verwendung findet.
      Es handelt sich hierbei um ein JWT Modul, dass von StiviK entwickelt wurde.
      en.wikipedia.org/wiki/JSON_Web_Token

      Welche Features hat das Modul?
      • verify JWT
      • sign JWT
      • read Claims
      Welche Algorithmen werden unterstüzt?
      • HS256
      • RS256
      • more comming soon
      Wie sieht die API aus?

      LUA-Quellcode

      1. bool jwtSign(function(string/boolean) callback, table claims, string algorithm, string secret/public_key_path, string private_key_path)
      Diese funktion erstellt und signed euch einen neuen JWT (Token), der token wird dem callback übergeben. Falls etwas nicht funktioniert hat gibt die funktion false zurück oder der callback wird mit false aufgerufen.


      LUA-Quellcode

      1. bool jwtVerify(string token, string secret/public_key_path, bool is_file_path = false)
      Diese funktion nimmt einen JWT (Token) und verified diesen, es wird auch anhand des keys die signatur überprüft.


      LUA-Quellcode

      1. table jwtGetClaims(string token)
      Diese funktion nimmt einen JWT (Token) und gibt euch als Key-Value-Pairs die claims zurück.

      Note: Das ganze Modul ist noch WIP (work-in-progress) somit könnte sich die API noch ändern.
      Alle anderen Funktionen die das Modul enthält findet ihr in unserer Dokumentation.

      Warum releast das eXo-Team den ganzen Spaß?
      Nunja, das hat den einfachen Grund, wir wollen unsere Arbeit auch mit anderen teilen und das nicht einfach für uns behalten! Wir hoffen wir können euch damit bereichern und vlt. sogar helfen!

      Wo kann man dann das Modul runterladen?
      Das ganze Modul ist Open-Source und kann in unsere GitHub-Organisation eingesehen werden.
      Released haben wir das ganze unter der MIT License diese kann, hier, eingesehen werden.

      GitHub-Organisation: github.com/eXo-OpenSource
      Repository: github.com/eXo-OpenSource/ml_jwt
      Download des Modules (Windows/Linux): github.com/eXo-OpenSource/ml_jwt/releases

      Falls ihr Fehler findet oder Vorschläge habt, könnt ihr einfach einen neuen Issue erstellen und wir werden uns das ganze ansehen!


      So nun das wars auch, viel Spaß mit dem Modul!

      - StiviK und das eXo-Reallife Team

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von StiviK ()

    • JWT steht für JSON Web Tokens, diese werden für APIs benutzt, als alternative einer Session, um die authentizität bzw. Identität eines Nutzters zu sicherstellen / mit einem Identity Provider auszutauschen. (Mehr dazu: de.wikipedia.org/wiki/JSON_Web_Token)
      Mithilfe des Moduls kann man z.B. für private APIs die man aus MTA ausrufen möchte einene solchen Token austellen. Aber auch validieren oder nur die claims des Tokens auslesen.

      - StiviK
    • StiviK schrieb:

      JWT steht für JSON Web Tokens, diese werden für APIs benutzt, als alternative einer Session, um die authentizität bzw. Identität eines Nutzters zu sicherstellen. (Mehr dazu: de.wikipedia.org/wiki/JSON_Web_Token)
      Mithilfe des Moduls kann man z.B. für private APIs die man aus MTA ausrufen möchte einene solchen Token austellen.
      Ok. Da ich lediglich einen Hauptschulabschluss besitze, war es erst ein wenig schwer zu begreifen und ich musste es mehrmals durchlesen, mir verinnerlichen, aber ich habe nun im Groben verstanden, wozu es gut sein soll. Vielleicht findet es eines Tages Verwendung.
    • Das Modul wird in Zukunft auf eXo verwendet damit wir beim CEF die Authentifizierung für den User mitgeben können. Dh das die Spieler Ingame das Forum öffnen können und automatisch eingeloggt sind.

      Aktuell haben wir ein etwas umständliches System mit einer API im Einsatz die uns den JWT Token generiert und diese wird durch ein sauberes Plugin abgelöst.
      If A equals success, then the formula is A equals X plus Y plus Z. X is work. Y is play. Z is keep your mouth shut.
    • In meiner täglichen Arbeit habe ich sehr viel mit JWT und OAuth zu tun, eigentlich schade dass man da bisher noch nicht vorher mal auf die Idee gekommen ist dass für MTA zu nutzen, da es doch eine recht große Sicherheit bietet.

      Sind in Zukunft noch weitere Tokenabstraktionen geplant? (AccessToken, RefreshToken, IdentyToken usw...) Wie lange sind die Token gültig, kann man die Dauer selbst definieren?

      Wirklich sicher ist das Ganze ja nur wenn die Signaturebene geheim bleibt, kann man sich dazu Modulseitig dann eigene Signaturregeln definieren?

      Nordhausen schrieb:

      Ich verstehe auch nicht so ganz, welchem Zweck es dient.
      Man kann das ganze sogar noch weiter treiben, so ein Token besteht aus einem Header, Body und einer verschlüsselten Signatur. In dem Body kann man Daten jeglicher Art unterbringen, man könnte also schützenswerte Daten sicher zwischen verschiedenen Servern teilen, auf jegliche Art von Webservice pumpen usw. Das System ist solange die Signierung nicht bekannt ist, äußert Missbrauchssicher und nur schwer auszuhebeln.

      Edit: Um die Sicherheit noch weiter zu erhöhen, kann man noch signierte Timestamps mit einbeziehen. So fällt jeder abgefangene Request und eine möglicherweise manipulierte Payload definitiv auf die Nase. Aber ich glaube für ein Spiel würde das zu weit gehen, glaube auch nicht dass die kriminelle Energie und das Wissen darum in so einer gekapselten Community groß genug ist.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von [email protected] ()

    • [email protected] schrieb:

      Wie lange sind die Token gültig, kann man die Dauer selbst definieren?
      Ja, dies muss man einfach dann über die claims dementsprechend setzen.

      LUA-Quellcode

      1. jwtSign(function() end, {["exp"] = "0000000"}, "HS256", "secret")

      [email protected] schrieb:

      Wirklich sicher ist das Ganze ja nur wenn die Signaturebene geheim bleibt, kann man sich dazu Modulseitig dann eigene Signaturregeln definieren?
      Für die Sicherheit ist man ja selbst verantwortlich.
      Das Modul signed den Token mit dem gegeben Algorithmus und dem Secret/PrivateKey

      [email protected] schrieb:

      Sind in Zukunft noch weitere Tokenabstraktionen geplant? (AccessToken, RefreshToken, IdentyToken usw...)
      Inwiefern meinst du das?

      - StiviK
    • Black schrieb:

      Das stimmt. Ich frage a er höflichkeits halber
      Es wurde auch in der Lizenz stehen ;)
      github.com/eXo-OpenSource/ml_jwt/blob/master/LICENSE

      [email protected] schrieb:

      Sind in Zukunft noch weitere Tokenabstraktionen geplant? (AccessToken, RefreshToken, IdentyToken usw...) Wie lange sind die Token gültig, kann man die Dauer selbst definieren?
      Ich hab das Gefühl das du etwas anderes im Kopf (in die Richtung von OAuth etc.) hast.
      tools.ietf.org/html/rfc7519 <- das wäre die Spezifikation für JWT


      JSON Web Token (JWT) is a compact, URL-safe means of representing
      claims to be transferred between two parties. The claims in a JWT
      are encoded as a JSON object that is used as the payload of a JSON
      Web Signature (JWS) structure or as the plaintext of a JSON Web
      Encryption (JWE) structure, enabling the claims to be digitally
      signed or integrity protected with a Message Authentication Code
      (MAC) and/or encrypted.
      If A equals success, then the formula is A equals X plus Y plus Z. X is work. Y is play. Z is keep your mouth shut.