JSONウェブトークンのデバッグ方法



クライアント側とサーバー側の両方の多くの現代的なWebアプリケーションは、優れたアプローチである認証のためのJSONウェブトークン(JWTS)を使用します.しかし、物事が動作しない場合は、それがなぜ仕事をトリッキーすることができます.
このポストは、あなたにJWTSで問題を理解して、修正するために、若干の戦術を与えることを目指します.あなたがちょうど始めているならば、チェックしてくださいdocumentation on working with JWTs and our APIs ファースト.

あなたのJSONウェブトークンは、もっともらしく見えますか?


時には問題は、あなたも正しい場所に適切な値を渡したかどうかを知るように簡単ですが、“に接続されているか?”質問.
それで、あなたのコードに少しのデバッグを加えて、あなたのエラーログまたはコンソールのようなJWTを見ることができます.
それから次のようにしてください.
  • これはトークンのようですか?これは、3つのセットのGarbledルックス英数字文字列(技術的に、大文字と小文字、数字の数字)です.+ and / とともに= ドットで区切られたパディングに使用されます.
  • 周辺に空白がありますか?厄介な、誤った空白はいくつかのツールを旅することができます.
  • それはすべてですか?私は、変数名を間違えて、問題が私であるとわかる前に数回トークンを再生しました.
  • トークンが目視検査を通過するならば、我々はより特定のツールを取り出す必要があります.

    JWTのJSONウェブトークンをチェックしてください。io


    秀逸があるJWT debugging tool (ありがとう、Auth 0 !)それは、物事が我々が目指していたものでないとき、我々が理解するのを助けることができます.

    左側のペインにJWTを貼り付け、解析した場合は、3つのセクションの詳細が右側に表示されます.
    最初のセクションはヘッダーで、使用されるタイプとアルゴリズムを示します.Vonage API呼び出しに署名するために、通常、これはそうですtyp of JWT and alg of RS256 <高橋潤子>Messages API signed webhooks are HS256 ).
    中央部は実際のデータのほとんどを含んでいます.ここでは、JWTSによるVonage API呼び出し用のフィールドがいくつかあります.
  • iat "発行時"を表し、Unixタイムスタンプでなければなりません
  • exp は"満了時間"であり、Unixタイムスタンプでもある
  • jti "JWT id "を表し、ユニークな識別子(指定されていない形式)でなければなりません
  • application_id Vonage API呼び出しに必要です、そして、それはトークンに署名するのに使用される秘密鍵にマッチしなければなりません.
  • また、sub フィールド(クライアントSDKはこれを使用します)または何かnbf このトークンが“前ではない”タイムスタンプであり、トークンがその瞬間まで有効でないことを意味します.
    JWTの3番目と最後のセクション.ioデバッガが署名です.JWTSはペイロードの一部ではない秘密鍵で作成されます.
    秘密鍵は本質的にあなたとVonageの間の共有秘密です.このセクションのWebインターフェイスに秘密キーを追加することで、署名がチェックアウトされることを確認できます.

    JWTの再生


    時々、我々が考える問題は、トークンが完全に異なる何かです!ここではいくつかの戦術を試してみるときに最初の2つの手順を支援しています.

    新しいアプリケーションを試してください


    新しいアプリケーションを作成し、新しいキーを生成し、正しいファイルをprivate key —これらは本当に違いを作るべきではないすべてのステップですが、時々必要なすべてです.それはJWTの問題の私の“1つの奇妙なトリック”であり、おそらくそれはあまりにもあなたを助けるでしょうか?

    別のJSONウェブトークンを生成する


    トークンを生成し、アプリケーションで使用するか、お好みのHTTPクライアントから生のAPI呼び出しで使用します.
    からのJWTを生成することができますNexmo CLI tool , アプリケーションIDと秘密キーを使用します.
    nexmo jwt:generate path/to/private.key application\_id=asdasdas-asdd-2344-2344-asdasdasd345
    
    代わりに、JWTを生成するために使用できる開発者ポータルにWebベースのヘルパーがあります.https://developer.nexmo.com/jwt .

    デバッグはスキル


    障害発見は、それ自身のすべてのセットされたスキルであり、うまくいけば、何か素晴らしいものを構築すると前進するのに役立つこのポストに何かがあった.あなたが共有するより多くのヒントを持っているなら、私たちに知らせてください!はい.
    郵便How To Debug JSON Web Tokens (JWTs) 最初に現れたVonage Developer Blog .