https://d226lax1qjow5r.cloudfront.net/blog/blogposts/nexmo-ruby-v7-2-0-release/Blog_Ruby-SDK-Update_1200x600.png

Nexmo Ruby v7.2.0 Veröffentlichung

Zuletzt aktualisiert am May 4, 2021

Lesedauer: 3 Minuten

Das Nexmo Ruby SDK hat kürzlich eine neue Version, v7.2.0, veröffentlicht. In dieser neuen Version wurde die JSON-Web-Token-Generierung umgeschrieben, um das neue nexmo-jwt Ruby-Gem zur Erzeugung von Token.

Die nexmo-jwt gem bietet den Nutzern mehr Flexibilität bei der Gestaltung eines Tokens, das genau auf ihre spezifischen Bedürfnisse zugeschnitten ist, und als Teil dieser Version ist diese Funktionalität nun für jeden Nutzer des SDK selbst verfügbar.

Welchen Zweck erfüllen JSON-Web-Tokens (JWTs)?

JWTs werden für viele unserer API-Dienste zur Authentifizierung verwendet. Ein JWT ist ein in sich geschlossener Mechanismus zum sicheren Austausch von Informationen zwischen Maschinen.

Jedes Vonage JWT wird mit einem öffentlichen und einem privaten Schlüsselpaar signiert, das die RSA256 Algorithmus signiert. Der Prozess der Kodierung und Dekodierung eines Tokens mit diesem Schlüsselpaar ermöglicht den Aufbau von Vertrauen zwischen dem Client und dem Server.

Wie bereits erwähnt, nutzen einige der neuesten und funktionsreichen APIs von Vonage JSON Web Tokens zur sicheren Authentifizierung und Kommunikation. Zu diesen APIs gehören Voice, Messages API, Dispatch und Conversation.

Die Leitfaden zur Authentifizierung auf dem Entwicklerportal enthält eine vollständige Liste der einzelnen APIs und der von ihnen unterstützten Authentifizierungsmodi.

Es ist sehr kompliziert, ein vollständiges JWT von Hand zu erstellen, um es mit den Vonage APIs zu verwenden. Es ist jedoch möglich, und wir haben einen Leitfaden auf dem Entwicklerportal, der den Prozess Schritt für Schritt erklärt.

Aufgrund der vielen miteinander verknüpften und komplexen Parameter, die dafür erforderlich sind, empfehlen wir jedoch die Verwendung eines unserer SDKs, um die Arbeit für Sie zu erledigen.

Vonage APIs JWT-Generierung in Ruby: Was hat sich geändert?

Seitdem die JWT-Authentifizierung in das Nexmo Ruby SDK eingeführt wurde, nutzt es die jwt Ruby gem, eine standardkonforme Bibliothek zur Erstellung von JWTs in Ruby. Dies bedeutete, dass ein großer Teil der Validierung der spezifischen Anforderungen für Vonage dem Benutzer überlassen wurde, um herauszufinden.

Das bedeutete auch, dass die unterstützte JWT-Generierung für Ruby-Entwickler, die mit Vonage-APIs arbeiten, nur im SDK möglich war, selbst wenn sie nicht die volle Funktionalität des SDKs benötigten, mussten sie es dennoch in ihrer Anwendung installieren.

Aus diesen Gründen haben wir eine eigene Bibliothek speziell für die JWT-Generierung entwickelt, nexmo-jwt. Dieses Vonage JWT Ruby Gem kann innerhalb des Ruby SDK verwendet werden undund, was ebenso wichtig ist, auch außerhalb des SDK als Standalone-Lösung verwendet werden.

Als zusätzliches Feature haben wir auch daran gearbeitet, zu vereinfachen, was Sie für die Generierung von JWTs für Vonage APIs wissen müssen. Wir unterstützen Sie auch bei der Behandlung von Ausnahmen, wenn Ihre Parameter verbessert werden müssen.

Erzeugen eines JWT

Das nexmo-jwt kann, wie erwähnt, sowohl innerhalb des Nexmo Ruby SDK als auch eigenständig verwendet werden. Innerhalb des SDK haben wir aus Gründen der Abwärtskompatibilität denselben Methodennamen und dieselbe Struktur beibehalten:

claims = {
    application_id: application_id,
    private_key: 'path/to/private_key',
    ttl: 800,
    subject: 'My_Subject'
  }
token = Nexmo::JWT.generate(claims)

Wenn Sie zuvor das Nexmo Ruby SDK verwendet haben, um ein JWT zu erzeugen, sind Sie wahrscheinlich daran gewöhnt, die private_key als separaten Parameter an die Methode zu übergeben. Das können Sie zwar weiterhin tun, aber es ist nicht mehr notwendig. Sie können das private_key innerhalb des claims Hashes einschließen, wie oben gezeigt.

Ein weiterer Punkt, der Ihnen auffallen wird, ist, dass wir nicht mehr einen expliziten Ablaufparameter mit einem exp Schlüssel und einem ganzzahligen Wert, der die Unix-Rechenzeit darstellt.

Stattdessen berechnen wir diese Daten für Sie mit den von Vonage APIs benötigten Daten. Sie können das Endergebnis ändern, indem Sie einen benutzerdefinierten ttl oder einen "time to live"-Wert in Form einer ganzen Zahl, die eine Anzahl von Sekunden angibt.

Dies ist jedoch auch nicht erforderlich. Standardmäßig werden 900 Sekunden (15 Minuten) ab dem Zeitpunkt der JWT-Generierung addiert, um die Zeit bis zum Ablauf der Gültigkeit zu berechnen.

Der Prozess zur Generierung eines JWT mit nexmo-jwt außerhalb des SDKs ist ähnlich, allerdings mit einigen leichten Unterschieden:

require 'nexmo-jwt'

@builder = Nexmo::JWTBuilder.new(application_id: application_id, private_key = 'path/to/private/key')
@token = @builder.jwt.generate

Anpassen eines JWT

Sie können auch jeden dieser benutzerdefinierten Parameter hinzufügen, zusätzlich zu ttl wie oben erwähnt, bei der Instanziierung der Nexmo::JWTBuilder Klasse hinzufügen:

  • nbf: Unix-Zeitstempel (UTC+0), in Sekunden, wann der JWT gültig wird

  • paths: Pfadinformationen in einem Hash für die Zugriffskontrolle auf API-Routen

  • sub: "Subject" oder vom Benutzer erstellter String, der mit der Nexmo-Anwendung verknüpft ist

Wenn Sie zum Beispiel ein Token mit benutzerdefinierten paths, subject und ttl Informationen zu erstellen, würden Sie wie folgt vorgehen:

@builder = Nexmo::JWTBuilder.new(
  application_id: YOUR_APPLICATION_ID,
  private_key: YOUR_PRIVATE_KEY,
  ttl: 500,
  paths: {
    "acl": {
      "paths": {
        "/messages": {
          "methods": ["POST", "GET"],
          "filters": {
            "from": "447977271009"  
          }     
        }  
      }   
    }
  },
  subject: 'My_Custom_Subject'
)

@token = @builder.jwt.generate

Um mehr über das Nexmo Ruby SDK und die Vonage APIs zu erfahren, können Sie die Dokumentation auf RubyDoc lesen und Code-Schnipsel, Anleitungen, Tutorials und mehr auf unserem Entwicklerportal.

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/e5480d2945/ben-greenberg.png
Ben GreenbergVonage Ehemalige

Ben ist ein Entwickler im zweiten Beruf, der zuvor ein Jahrzehnt in den Bereichen Erwachsenenbildung, Community-Organisation und Non-Profit-Management tätig war. Er arbeitete als Anwalt für Entwickler bei Vonage. Er schreibt regelmäßig über die Überschneidung von Gemeindeentwicklung und Technologie. Ursprünglich aus Südkalifornien stammend und lange Zeit in New York City ansässig, wohnt Ben jetzt in der Nähe von Tel Aviv, Israel.