投稿者:常田

従来API ConnectなどでAPIを公開する際に、APIサーバとしてCFアプリケーションを利用する場合APIサーバ自身にインターネット先から接続できるという課題が有りました。そのためAPIサーバ側に認証機能などを実装しておくことがセキュリティ上そしてAPIの機能上望ましい状態でした。

スクリーンショット 2017-06-30 12.28.59.png

今回登場したCFアプリケーションの「API Management」オプションはこの問題をシンプルに解決することが出来ます。

スクリーンショット 2017-06-30 12.34.05.png

CFアプリケーションのオプションの一つして追加された「API Management」の機能を利用すると、CFアプリケーションを指定したOpenAPI/Swagger形式のアクセスのみを実行するように保護することが出来ます。また認証についても「API Management」側で実施するためCFアプリケーション内で実装する必要がありません。このことから特にAPI Connectのバックエンドとして動作する CFアプリケーションでまずは利用して頂きたい機能です。

.

 構成

今回は最小限の動作を確認するために、Node-REDがアプリケーションに対してAPI Managementの設定を行います。

スクリーンショット 2017-06-30 12.44.58.png

初期では、GET / でシンプルなJSONを取得するだけのNode−REDアプリケーションに対して認証キーを設定し期待通りの動作をするのかを確認します。

API Serverとしての状態

Node-REDのHTTPモジュールを利用して以下のようなレスポンスを返す機能を実装してみました。

$ curl https://testapinodered.mybluemix.net/
{"message":"Hello API management"}%

.

設定

先程のNode-REDアプリケーションをWebコンソールで開きます。 設定を行うためには、CFアプリケーションの詳細画面にて左下の「API Management」をクリックします。右側のペインにある「Getting Start」をクリックしてAPI Managementの利用を開始します。

スクリーンショット 2017-06-30 12.32.41.png

次の画面は初期の設定を決める画面になります。隠れていますが右下に「Save」ボタンが有ります。今回はAPIKeyを利用しますので「Require applications to authenticate via API key」を有効にしてから保存します。

スクリーンショット 2017-06-30 12.49.52.png

これでAPI Managementが有効になっている事になります、現在の認証の設定は以下のようになっていることとします。

スクリーンショット 2017-06-30 12.57.48.png

ここまで出来たら後は実際に利用するために認証キーの機能を有効にします。[Expose Managed API」を有効にします。

スクリーンショット 2017-06-30 12.51.42.png

次に、外部から接続用にKeyを作成してみます。画面を下にスクロールして表示される「Create API Key」をクリックして発行を行います。

スクリーンショット 2017-06-30 13.13.13.png

動作確認

先程の用にCurlから呼び出してみます。

curl https://testapinodered.mybluemix.net/
{"status":401,"message":"Error: Unauthorized"}

どうでしょうか?きちんとただし認証がエラーになっています。では次に指定したヘッダを付与してみます。

curl -H "X-IBM-Client-ID:56377c0f-df83-4eaf-98d5-026xxxx" https://testapinodered.mybluemix.net/
{"message":"Hello API management"}

出てきました、成功です。

このようにAPI Managementを設定することでAPIに対して認証機能を付けることが出来ました。今回利用したKeyだけでなく対応するパスワードも併用することやSNS認証をOAuth経由で実施することも可能です。

また先ほどAPIキーを作成した画面に表示されているURLをクリックするとオンラインで動作確認が出来るExploerが起動します。

スクリーンショット 2017-06-30 13.18.03.png

このようにすることで、CFアプリケーションを保護することが出来ました。全面にAPI Connectがある場合にはフォワード先のAPIサーバの接続設定で先ほどのヘッダ情報を含めるようにしてください。

.

まとめ

  • CFアプリケーションでAPIをする際に便利な機能としてAPI Managementの機能を紹介しました。
  • APIサーバとして構築を行っていて認証機能をバックエンドに付けている場合、API Managementの機能を有効利用することでIDの認証機能をCFアプリケーション以外で実施することが出来る(全体の構成の簡略化)