2016年10月10日月曜日

Azure API Management 経由で LogicFlow を呼び出す

LogicApps や Flow など、LogicFlow にはセキュリティの仕組みがないのは周知のとおりですが、これは API Management を利用することで対応可能、というかこうするのが本筋のような気もしますのでメモ書きとして残しておきます。

まずは呼び出される側の LogicFlow を作成します。今回は手っ取り早く Flow で作成。

image

サンプルですので、呼び出されるとすぐに結果を返却するものです。この際、HTTP Request コネクタでは、呼び出すための URL が生成されています。これはこの URL を POST で呼び出せばそのまま LogicFlow が実行されるのはこれまでに扱った通りです。

次に API Management を用意して、LogicFlow を呼び出すためのプロキシを作成します。

image

残念ながら、現在のポータルからはまだ利用できないので旧ポータルから・・・。

image

新規に作成しようとすると、上記のようなダイアログが表示されます。ここで設定するのは、呼び出しベースとなる URL と、構築対象となる Azure サブスクリプション、そして構築場所のリージョンです。API Management でプロキシを挟んだ環境の場合、[プロキシの URL]/[API]のような形でアクセスが可能になります。

image

同時に開発者向けポータル、が作成されるのですがその際に表示する組織名と、問い合わせ先となるメールアドレスです。

image

作成にはおおよそ 30 分ほどかかります。これで API Management な環境が構築されましたので、続けて API の定義を行います。

image

先程のダッシュボードに「発行者ポータル」と書かれていたところがあったので、それをクリックすると上記のようなサイトが開かれます。ここから、利用する API の設定を行います。

image

左のメニューから「APIs」をクリックすると上記のように表示されます。ここで新たに API を追加するか、既存の API を変更するかを行います。今回は新規に登録しますので[ADD API]を、もし利用する API に Swagger な JSON ファイルがあるのでしたら[IMPORT API]をクリックします。

image

ADD API 選択時は、このように WebAPI の名前、Web サービスの URL(今回でいえば LogicFlow の URL)、URL サフィックス(API Management 経由で呼び出す際に URL に付与するアドレス)を指定します。この時点では Web サービスの URL として、LogicFlow で生成された URL をそのまま張り付けておきますが、後でここは修正する必要があります。

image

IMPORT API の場合は、生成されている Swagger の JSON ファイルを指定することになります。WADL にも対応しているので、利用できる方を利用してください。

image

設定が行われると、先程の一覧に API が追加されますのでそれをクリックすると、このように詳細が表示されます。ここから実際に呼び出すことができるよう、設定を追加します。

image

まずは Setting タブで表示される部分です。ここで変更が必要なのは[Web service URL]に表示されている、呼び出される Web サービスのアドレスです。ここは先程、LogicFlow で生成された URL をそのまま張り付けていたので、api-version に始まる各種パラメータが付随するアドレスになっています。これを除去します。上の例では「~ triggers/manual 」まで削ったものとなります。

image

次は API Management を経由して呼び出す際の、呼び出し方を定義します。Operation タブで設定を行います。上の例ではすでに一つ登録した後ですが、新規時は何もない状態ですので[ADD OPERATION]をクリックします。

image

LogicFlow の呼び出し方をここで定義します。LogicFlow は基本 POST でなくてはならないので、API Management 側も同じく POST に合わせます。そして URL template には / だけとしていますが、これは https;//[API Management のプロキシアドレス]/[API のサフィックス]/ というパラメータもない状態で呼び出し可能としたかったから、/ 以外は何も記載していません。

そして Rewrite URL Template のところで、実際の呼び出しで必要なパラメータ、api-version や sig などを記載します。こうしないで、Web サービスの呼び出し URL にすべてを含めた形にしていても行けそうに思えますが、実際には呼び出そうとした際にパラメータがすべてクリアされてしまいますので、この部分でパラメータを付与するように指定する必要がありました。

ここまで設定すると、API を呼び出す下準備は整ったことになります。後必要なのは、API Management 経由の場合、API Management を利用するユーザーの情報が必要になります。

image

これは API の設定で上記のように「セキュリティ:何もなし」にしていても必要です。

image

そして実際に必要となる値は、左のメニューから Users を選択し、対象ユーザーの詳細を表示した際に確認可能です。この値を、呼び出し時のヘッダ情報に含ませる必要があります。

実際に呼び出しを行っています。私の場合は Advanced REST Client が気に入っているのでこれを利用しています。

image

上記のように、ヘッダ情報に Ocp-Apim-Subscription-Key というキーを追加し、値としてユーザーに振られているキー情報を記載します。こうすることで API Management を経由して LogicFlow を呼び出すことが可能になります。

API Management を利用する利点は、セキュリティの設定や課金の設定、利用量の測定などがまとめて行えて、呼び出し先の API 自体になんら影響を与えない点です。今回のように LogicFlow だけではセキュリティもなく問題がある場合でも、API Management 側で認証を行うなどを実施することが可能になりますので、非常に使い出のあるサービスなのではないでしょうか。

0 件のコメント:

コメントを投稿