
シェア:
ベンはセカンドキャリアの開発者で、以前は成人教育、コミュニティ組織化、非営利団体運営の分野で10年を過ごした。彼はVonageの開発者支援者として働いていた。コミュニティ開発とテクノロジーの交差点について定期的に執筆している。南カリフォルニア出身で、長年ニューヨークに住んでいたが、現在はイスラエルのテルアビブ近郊に在住。
Nexmo Ruby v7.2.0 リリース
先日、Nexmo Ruby SDKの新バージョンv7.2.0がリリースされました。この新しいバージョンでは、JSON Webトークン生成機能が、新しい nexmo-jwtRuby gemを使用するように書き直されました。
について gemは、ユーザが特定のニーズに合わせてトークンを設計できる柔軟性を提供します。
JSONウェブトークン(JWT)はどのような目的を果たすのか
JWTは、私たちのAPIサービスの多くで認証のために使用されています。JWTは、マシン間で安全に情報を共有するための自己完結型のメカニズムです。
各Vonage JWTは、公開鍵と秘密鍵のペアで署名されます。 RSA256アルゴリズムで署名されます。このキー・ペアを使用してトークンをエンコードおよびデコードするプロセスにより、クライアントとサーバー間の信頼が確立されます。
前述のとおり、Vonage の最新かつ機能豊富な API のいくつかは、JSON Web トークンを利用して安全に認証および通信を行います。これらの API には Voice、Messages、Dispatch、Conversation が含まれます。
認証ガイド 認証ガイドには、各 API の完全なリストと、それがどの認証モードをサポートしているかが記載されています。
Vonage APIで使用するために、完全に認証されたJWTを手作業で生成するには、多くの複雑さが伴います。しかし、それは可能です。 ガイドがあります。
しかし、相互リンクされた複雑なパラメータが必要なため、私たちはSDKを使用することをお勧めします。
RubyでのVonage API JWT生成:何が変わったのか?
JWT認証がNexmo Ruby SDKに導入されて以来、Nexmo Ruby SDKでは jwtこれはRubyでJWTを構築するための標準準拠ライブラリです。これは、Vonageに特有の要件の検証の多くが、ユーザーに任されていたことを意味します。
また、Vonage APIを使用するRuby開発者のJWT生成支援はSDKでのみ可能であり、SDKの全機能を必要としない場合でも、アプリケーションにインストールする必要がありました。
このような理由から、JWT生成専用のライブラリを別途作成することになりました、 nexmo-jwt.このVonage JWT Ruby gemはRuby SDKの中で使うことができます。 そして同様に重要なことですが、SDKの外でもスタンドアロンで使用することができます。
追加機能として、Vonage API用のJWTを生成するために必要な知識も簡素化しました。また、パラメータの改善が必要な場合は、カスタム例外処理もご案内しています。
JWTの生成
この nexmo-jwtgemはNexmo Ruby SDK内でもスタンドアロンでも使用できます。SDK内部では、後方互換性のために同じメソッド名と構造を維持しています:
claims = {
application_id: application_id,
private_key: 'path/to/private_key',
ttl: 800,
subject: 'My_Subject'
}
token = Nexmo::JWT.generate(claims)以前にNexmo Ruby SDKを使ってJWTを生成した場合、おそらくメソッドに別のパラメータとして private_keyを別のパラメータとしてメソッドに与えることに慣れているでしょう。それは可能ですが、もはや必要ありません。メソッド内に private_keyを claimsハッシュを含めることができます。
もうひとつお気づきの点は、明示的な期限切れパラメータを提供しないことである。 expキーとUnixのマシン時間を表す整数の値を持つ明示的な有効期限パラメータを提供していないことです。
その代わりに、Vonage APIが要求するものを使ってデータを計算します。あなたはカスタム ttlまたは "time to live "値として秒数を表す整数を指定することで最終結果を変更することができます。
しかし、その必要もない。デフォルトでは、JWTが生成された瞬間から900秒(15分)を追加して、有効期限までの時間を計算します。
を使用してJWTを生成するプロセスは nexmo-jwtを使ってJWTを生成するプロセスは似ていますが、若干の違いがあります:
require 'nexmo-jwt'
@builder = Nexmo::JWTBuilder.new(application_id: application_id, private_key = 'path/to/private/key')
@token = @builder.jwt.generate JWTのカスタマイズ
に加えて、これらのカスタム・パラメータを追加することもできます。 ttlに加えて、これらのカスタム・パラメータを追加することもできます。 Nexmo::JWTBuilderクラスのインスタンス化で追加できます:
nbf:JWTが有効になるUnixタイムスタンプ(UTC+0、秒単位paths:API経路へのアクセス制御のためのハッシュ内のパス情報sub:"件名 "またはユーザーが作成し、Nexmoアプリケーションに関連付けられた文字列。
例えば、カスタム・トークンを作成したい場合、次のようになります。 paths, subjectと ttlの情報を持つトークンを作りたい場合は、次のようにする:
@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.generateNexmo Ruby SDKとVonage APIsの詳細については、以下のドキュメントをご覧ください。 RubyDocのドキュメントをお読みください。 開発者ポータル.