11.4. 参照元フィルター機能

3scale では参照元フィルター機能がサポートされ、API へのアクセスが許可されるアプリケーションの IP アドレスまたはドメイン名をホワイトリストに登録することができます。API クライアントでは、Referrer ヘッダーで参照元の値を指定します。Referrer ヘッダーの目的および使用法については、RFC 7231 のセクション 5.5.2「Referer」に説明があります。

参照元フィルター機能を有効にするには、[your_API_name] > Integration > Settings の順に移動し、Require referrer filtering チェックボックスを選択して Update Service をクリックします。

Enable Referrer Filtering

ご自分の API にアクセスする開発者は、デベロッパーポータルから許可される参照元のドメイン/IP を設定する必要があります。

Configure Referrers in the Developer Portal

管理ポータルでは、このサービスに属する全アプリケーションの詳細ページに、新たな Referrer Filters セクションが表示されます。ここで、管理者は、このアプリケーションの許可される Referrer ヘッダー値のホワイトリストを設定することもできます。

Configure Referrers in the Developer Portal

アプリケーションごとに、最大 5 つの参照元の値を設定することができます。

値に使用することができるのは、ラテン文字、数字、ならびに特殊文字 *.、および - だけです。* はワイルドカードの値として使用することができます。値を * に設定するとあらゆる参照元の値が許可され、参照元の確認はバイパスされます。

参照元フィルター機能が動作するためには、サービスポリシーチェーンで APIcast Referrer ポリシー を有効にする必要があります。

Require referrer filtering 機能および 3scale Referrer ポリシーが有効な場合には、承認は以下のように行われます。

  1. 参照元フィルターが指定されていないアプリケーションは、提供されたクレデンシャルだけを使用して通常どおり承認されます。
  2. 参照元フィルターの値が設定されたアプリケーションの場合には、APIcast はリクエストの Referer ヘッダーから参照元の値を抽出し、それを AuthRep (承認およびレポート) リクエストの referrer パラメーターとして Service Management API に送信します。以下の表は、参照元フィルター機能のパラメーターのさまざまな組み合わせに対する AuthRep の応答をまとめています。
referrer パラメーターが渡されるかアプリケーションに参照元フィルターが設定されているかreferrer パラメーターの値HTTP レスポンスレスポンスのボディー

渡される

設定されている

参照元フィルターと一致する

200 OK

<status><authorized>true</authorized></status>

渡される

設定されていない

参照元フィルターと一致する

200 OK

<status><authorized>true</authorized></status>

渡される

設定されている

参照元フィルターと一致しない

409 Conflict

<status><authorized>false</authorized><reason>referrer "test.example.com" is not allowed</reason> (test.example.com は例です)

渡される

設定されていない

参照元フィルターと一致しない

200 OK

<status><authorized>true</authorized></status>

渡される

設定されている

*

200 OK

<status><authorized>true</authorized></status>

渡される

設定されていない

*

200 OK

<status><authorized>true</authorized></status>

渡されない

設定されている

 — 

409 Conflict

<status><authorized>false</authorized><reason>referrer is missing</reason>

渡されない

設定されていない

 — 

200 OK

<status><authorized>true</authorized></status>

AuthRep により承認されない呼び出しは、APIcast により拒否され「Authorization Failed」エラーが返されます。サービスの Integration ページで、ステータスコードおよびエラーメッセージを具体的に設定することができます。