チュートリアル: JSON Web トークン (JWT) の検証

このチュートリアルでは、JSON Web トークン (JWT) を検証する REST API 定義を定義して実装する方法について説明します。

このチュートリアルについて

このチュートリアルでは、以下のレッスンを行います。
  1. JWT の検証
  2. REST API のテスト
:Sandboxカタログは、 DataPower® Gateway (v5 compatible) または DataPower API Gateway 、あるいはその両方を使用するように設定する必要があります。 カタログの作成と設定を参照してください。

開始前に

また、以下の手順も行う。

  • 「チュートリアル: JSON Web Token (JWT) の生成」 チュートリアルを完了します。 このチュートリアルでは、このチュートリアルで検証できる JSON Web トークンを生成します。 この検証 API をテストするには、この JWT が必要です。

JWT の検証

JSON Web トークン (JWT) を検証するための REST API を作成します。

この REST API を追加および定義するには、以下のステップを実行します。
  1. API Manager にログインします。
  2. ようこそ] ページで、 [APIと製品の開発] タイルをクリックします。

    API Manager 画面

  3. Add > API(REST、 GraphQL、またはSOAPから)をクリックします。

    API追加画面

  4. が選択されていることを確認してください。 OpenAPI 3.0 選択されていることを確認してください。
  5. 新しい OpenAPI を選択します。 「次へ」をクリックします。

    選択する OpenAPI

  6. REST API 定義を作成するための適切な情報を入力します。
    1. タイトルフィールドに「 JWTVAL 」と入力します。
    2. 「名前」フィールドと「基本パス」フィールドにそれぞれ、jwtval および /jwtval という言葉が自動的に設定されます。
    3. バージョンフィールドには、 1.0.0 が自動的に入力されます。

    基本情報画面

  7. 次へ をクリックします。
  8. セキュア画面を表示しない。 「次へ」をクリックします。

    Secure API

  9. 新規 API の作成中は、その進行状況が表示されます。 完了すると、「要約」が表示されます。 APIの編集をクリックします。

    新しいAPIの概要

  10. 「設計」ページのサイド・バーで、「パス」を選択して「パス」パネルを表示します。
  11. 追加 をクリックします。

    「パス」ページ

  12. パスの欄に 「/val 」と入力する。
  13. 追加 をクリックします。

    パス情報を追加する

  14. スクロールダウンします。 パラメータセクション、「追加」 をクリックします。

    パラメーターの追加

    1. パラメータ名フィールドAuthorization と入力します。
    2. Located In フィールドで header
    3. Enter Bearer <jwt> を入力して、 説明欄に一致させます。
    4. 必須を選択します。
    5. 「作成」 をクリックします。

      パスパラメータの設定

    6. スクロールダウンします。 スキーマセクション「作成」 をクリックします

      スキーマの追加

    7. Type フィールドで string
    8. 「作成」 をクリックします。

      ストリングの追加

  15. パラメータを作成したら、 [保存] をクリックします。
  16. コンポーネント > レスポンスをクリックします。
  17. 追加 をクリックします。

    レスポンスページ

  18. 「レスポンス名」 のフィールドには、 200 が自動的に入力されます。
  19. 「説明」の欄200 OK と入力してください。

    スキーマの追加

  20. 応答を作成したら、 [保存] をクリックします。
  21. クリックゲートウェイ
  22. 既存のプロキシまたは開始アクションにマウスカーソルを合わせ、ゴミ箱アイコンをクリックして削除します。

    ゲートウェイ・ページ

  23. 「変数の設定」アクションを処理フロー行にドラッグします。 構成パネルが自動的に開きます。
  24. 「アクションの追加」をクリックします。

    変数アクションを追加

  25. 「セット」フィールドhs256-key と入力します。
  26. Type フィールドで string
  27. 値フィールドにJWKを入力します。 以下に一例を示します。 { "alg": "HS256", "kty": "oct", "use": "sig", "k": "o5yErLaE-dbgVpSw65Rq57OA9dHyaF66Q_Et5azPa-XUjbyP0w9iRWhR4kru09aFfQLXeIODIN4uhjElYKXt8n76jt0Pjkd2pqk4t9abRF6tnL19GV4pflfL6uvVKkP4weOh39tqHt4TmkBgF2P-gFhgssZpjwq6l82fz3dUhQ2nkzoLA_CnyDGLZLd7SZ1yv73uzfE2Ot813zmig8KTMEMWVcWSDvy61F06vs_6LURcq_IEEevUiubBxG5S2akNnWigfpbhWYjMI5M22FOCpdcDBt4L7K1-yHt95Siz0QUb0MNlT_X8F76wH7_A37GpKKJGqeaiNWmHkgWdE8QWDQ", "kid": "hs256-key" }

    Setvarプロパティ

  28. プロパティー・パネルを閉じます。 保存 をクリックします。
  29. 「JWT の検証」アクションを、処理フロー行の「set-variable」アイコンの後にドラッグします。 構成パネルが自動的に開きます。

    JWT Validateアクションが追加された

  30. 「Verify Crypto JWK」の変数名フィールドに「 hs256-key 」と入力します。

    JWT Validate プロパティ

  31. プロパティー・パネルを閉じます。 保存 をクリックします。
  32. 「GatewayScript」アクションを、「JWT の検証」アイコンの後の処理フロー行にドラッグします。 構成パネルが自動的に開きます。
  33. 以下のコードを入力します。
    var apim = require('apim');
    apim.setvariable('message.body',apim.getvariable('decoded.claims'));
    注: レスポンスには次のような警告が含まれることがあるが、これは無視してよい:
    警告このgatewayscriptポリシーは、古いAPIを移行するためだけのapimモジュールを使うべきではありません。

    GatewayScript アクションが追加されました

  34. プロパティー・パネルを閉じます。 保存 をクリックします。
  35. 「Catch の表示」オプションを必ず有効にして、「catch」領域が表示されるようにします。

    ページキャッチを組み立てる

  36. クリックでキャッチ。 プロパティー・パネルが開きます。
  37. デフォルトのキャッチを追加をクリックします

    ページキャッチを組み立てる

  38. 「GatewayScript」ポリシー・アクションを Catch フロー行にドラッグします。
  39. 以下のコードを入力します。
    var apim = require('apim');
    apim.setvariable('message.body',apim.getvariable('jwt-validate.error-message'));

    ページキャッチフローを組み立てる

  40. プロパティー・パネルを閉じます。 保存 をクリックします。

REST API のテスト

注: クロスオリジンリソース共有(CORS)の制限により、 macOS Catalinaプラットフォーム上のChromeまたはSafariブラウザでは、アセンブリテストツールを使用できません
REST API をテストするには、有効な JWT が必要です。 このような JWT は、「チュートリアル: JSON Web Token (JWT) の生成」 で作成された API を起動することで取得できます。 REST API をテストするには、以下のステップを実行します。
  1. 作成したAPIを有効化するには、有効化トグルをオンにします。
  2. 「テスト」をクリックします。
  3. Bearer を入力し、スペースを入れ、 Authorizationパラメータに対応する Valueフィールドに同じ署名キーで生成された有効なJWTを入力します。
    注: パラメータに認証キーが含まれていない場合は、正しいリクエストパスが選択されていることを確認してください。 /val で終わるリクエストパスを選択するか、またはGETリクエストに /val を手動で追加します。
  4. 「送信」 をクリックします。
  5. 応答には支店データが含まれています。

API 定義の管理

これで、新しいAPIが正しく動作するようになったので、このAPIを管理することができる。 即時オプションを表示するには、以下のステップを実行します。

  1. ナビゲーションバーの「 現像」 アイコン アイコンを開発する をクリックします。
  2. Mapper APIの横にある Options アイコン( 管理アイコン )をクリックします。

    API の管理

  3. ダウンロードを選択します。

このチュートリアルで実行したこと

このチュートリアルでは、以下のアクティビティーを実行しました。
  • JSON Web トークン (JWT) を検証する新しい API 定義を作成しました。
  • 新しい API をテストしました。