演習 - ヘッダー情報を削除する

完了

多くの場合、Web API を公開する企業では、できれば API のソース コードを書き換えることなく、API によって返される HTTP ヘッダーを慎重に制御する必要があります。

政府は、RESTful API を使用して関連機関と国勢調査データを共有することを決定しました。 重要な要件は、データが安全に共有され、迅速な統合を容易にするために簡単に修正できることです。 あなたは開発リーダーとして、API ゲートウェイを作成する必要があります。 最新のセキュリティ標準を使用して OpenAPI エンドポイントを発行する RESTful Census API を、ゲートウェイを使用して公開します。

ここでは、次のことを行います。

  • RESTful Census API を公開します。
  • API Management ゲートウェイをデプロイします。
  • ゲートウェイ エンドポイントを介して Census API を公開します。
  • 応答からヘッダーを削除します。

重要

この演習を行うには、独自の Azure サブスクリプションが必要です。また、料金が発生することがあります。 Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。

Census Web API をデプロイする

あなたは国勢調査の機密情報を返す .NET Core アプリを開発しました。 アプリには、OpenAPI のドキュメントを生成するための Swashbuckle が含まれています。

時間を節約するために、Azure で RESTful API をホストするスクリプトの実行から始めましょう。 そのスクリプトでは、次の手順が実行されます。

  • Azure App Service プランが Free レベルで作成されます。
  • これによって Web API が Azure App Service 内に作成され、ローカル リポジトリからの Git デプロイ用に構成されます。
  • アプリに対するアカウント レベルのデプロイ資格情報が設定されます。
  • Git がローカル環境に構成されます。
  • これによって Web API が App Service インスタンスにデプロイされます。
  1. Azure portal にサインインします。

  2. Azure タスク バーにある Cloud Shell アイコンを選んで Azure Cloud Shell を開きます。

    タスク バーの Cloud Shell アイコンのスクリーンショット。

  3. アプリのソースが含まれているリポジトリを複製するには、Cloud Shell で git clone コマンドを実行します。

    git clone https://github.com/MicrosoftDocs/mslearn-protect-apis-on-api-management.git
    
  4. ローカル環境のリポジトリのフォルダーに移動するには、次のコマンドを実行します。

    cd mslearn-protect-apis-on-api-management
    
  5. setup.sh は、その名前からわかるように、テスト API を作成するために実行するスクリプトです。 このスクリプトにより、OpenAPI インターフェイスを公開するパブリック Web アプリが生成されます

    bash setup.sh
    

    スクリプトの実行には約 1 分かかります。 スクリプトが完了すると、アプリのデプロイをテストするために使用できる 2 つの URL が表示されます。 デプロイの間に、アプリの実行に必要なすべての依存関係がリモートの App Service に自動的にインストールされることを確認します。

  6. アプリが正常にデプロイされたことをテストするには、Cloud Shell の出力から最初の URL をコピーして、ブラウザーに貼り付けます。 ブラウザーによってアプリの Swagger UI が表示され、次の RESTful エンドポイントが宣言されるはずです

    • api/census: 国勢調査および関連付けられた人が返されます
    • api/census/{censusYear}: 指定した年の国勢調査および関連する人が返されます
    • api/people/{reference}: 特定の人に関する詳細情報が返されます

    RESTful エンドポイントを示す API の Swagger ページのスクリーンショット。

  7. 最後に、Cloud Shell の出力から最後の URL をコピーします。 この URL は Swagger JSON URL であり、この演習で後ほど必要になります。

API ゲートウェイをデプロイする

この演習の次のステップでは、Azure portal で API ゲートウェイを作成します。 次のセクションでは、このゲートウェイを使って API を発行します。

  1. Azure portal にサインインします。

  2. Azure portal のメニューまたは [ホーム] ページで [リソースの作成] を選択します。 [リソースの作成] ウィンドウが表示されます。

  3. 左側のメニュー ペインで [統合] を選択し、[Search services and marketplace] (サービスとマーケットプレースの検索) 検索ボックスに「API Management」と入力します。 結果内の [API Management] カードを選択してから、[作成] を選択して [API Management サービスの作成] ペインを開きます。

  4. [基本] タブで、各設定に対して次の値を入力します。

    設定
    プロジェクトの詳細
    サブスクリプション サブスクリプションを選択します。
    Resource group 新規または既存のリソース グループを選択します。 リソース グループは、Azure ソリューションの関連リソースを保持する論理コンテナーです。
    インスタンスの詳細
    リージョン 使用可能なリージョンを選択します。
    リソース名 apim-CensusData<random number>」を入力し、random number は名前がグローバルに一意になるように独自の数字列で置き換えます。
    組織名 Government-Census」と入力します。 開発者ポータルとメール通知で使う組織の名前 (開発者ポータルと通知をすべてのサービス レベルで使用できるわけではありません)。
    管理者のメール アドレス すべてのシステム通知を受信するメール アドレス。
    価格レベル
    価格レベル ドロップダウン リストから Consumption (99.95% SLA) を選択します。

    [Create API Management service] (API Management サービスの作成) 画面の [基本] タブの完了した設定のスクリーンショット。

    Note

    Consumption レベルにはテスト用の高速デプロイが提供され、従量課金制の価格モデルがあります。 全体的な API Management エクスペリエンスは他の価格レベルと同様です。

  5. [Review + create](レビュー + 作成) を選択します。 検証に合格した後、 [作成] を選択します。 デプロイには数分かかることがあります。 デプロイが完了すると、API Management インスタンスが Azure リソースの一覧に表示されます。 [リソースに移動] を選んで、API Management サービスのペインを表示します。

API をインポートする

ここで、Census API を API Management ゲートウェイにインポートします。

  1. API Management インスタンスの左側のメニュー ペインの [API] で、[API][+ API の追加] の順に選択します。

  2. [Create from definition](定義から作成) で、[OpenAPI] を選択します。 [OpenAPI 仕様から作成する] ダイアログ ボックスが表示されます。

  3. [OpenAPI 仕様] フィールドに、この演習で先ほど保存した Swagger JSON URL を貼り付けます。

    Swagger JSON URL が入力された [OpenAPI 仕様から作成する] ダイアログ ボックスのスクリーンショット。

    Note

    ボックスからタブ移動すると、他のフィールドの一部が自動で入力されていることに気づくでしょう。 これは必要な接続の詳細の多くを指定する OpenAPI を使用したためです。

  4. 他の設定を既定値のままにして、[作成] を選択します。

API をテストする

既定では、API からどのようなデータが返されるかを見てみましょう。

  1. Azure portal メニューで、または [ホーム] ページから、[すべてのリソース] を選択した後に、API Management インスタンスを選択します。

  2. 左側のメニュー ペインの [API] で、[API] を選択し、中央のペインで、[Census Data] を選択します。

  3. 上部のメニュー バーで、[テスト] タブを選択し、[GetLatestCensus] 操作を選択します。

  4. [Send] を選択します。

    既定の応答の内容が表示されている GetLatestCensus 操作のテスト結果のスクリーンショット。

  5. 応答に x-powered-by が表示され、フレームワークが ASP.NET であることが示されていることに注意してください。

ヘッダーを削除する

次に、API によって送信される応答から x-powered-by ヘッダーを削除するポリシーを追加します。

  1. [Census Data] を再度選択し、上部のメニュー バーで、[デザイン] タブを選択します。

  2. [すべての操作] を選択し、[送信処理] セクションで、</> アイコンを選択します。 ポリシー XML エディターが表示されます。

    [送信処理] セクションで [ポリシー] アイコンが強調表示されている [デザイン] タブのスクリーンショット。

  3. 既定の <outbound> タグを次のコードに置き換えます。

    <outbound>
       <set-header name="x-powered-by" exists-action="delete" />
       <base />
    </outbound>
    
  4. [保存] を選択します。

ヘッダーの削除をテストする

これで、テストを実行して、ヘッダーが削除されるのを確認できるようになりました。

  1. [Census Data] を再度選択し、上部のメニュー バーで、[テスト] タブを選択します。

  2. [GetLatestCensus] 操作を選択し、[送信] を選択します。

    応答でヘッダーが削除されたことを示す GetLatestCensus 操作のテスト結果のスクリーンショット。

  3. HTTP 応答に x-powered-by ヘッダーが含まれないようにします。