「ホスト」フィールドに、IP アドレスを入力します。API プロキシは、ネットワーク内またはネットワーク外でホストになることができます。
管理者ポータルは、ColdFusion API Manager の管理者プロパティおよび機能を管理するためのプラットフォームです。管理者ポータルを使用して、公開したすべての API、その機能情報および機能以外の情報を管理できます。
管理者として、次のタスクを実行できます。
- 単一または複数の公開した API に関して、すべてのユーザーおよびそのロールを追加および管理する。
- すべての SLA プランを表示および管理する。
- 公開したすべての API の層プランを表示および管理する。
管理者ポータルへのログイン
管理者ポータルにログインするには:
- 表示されるフィールドにユーザー名とパスワードを入力します。
- 「ログイン」をクリックします。
パスワードを変更する場合は、<API Manager Installation Directory>/conf に移動して、password.properties ファイルを開きます。ファイルで、パスワードを変更します。デフォルトの管理者パスワードのみ、password.properties ファイルを使用して変更できます。
管理者パスワードのリセット手順:
1. <apimanager_home/conf>にある password.properties ファイルのエントリを次のように編集します:
adminname=<API Manager インストール時のユーザー名>
adminpassword=<希望する新しいパスワード>
2. default_conf.xml で readDefault を true に設定します。
3. 「ColdFusion 2016 API Manager」サービスを再起動します。
このアカウントを削除または編集して、管理者権限を削除することはできません。
デフォルトユーザー以外のその他のユーザーのパスワードは変更できません。
ヘッダーロゴとタイトルの変更
管理者ポータルのヘッダー領域にあるロゴおよびタイトルを変更できます。
<API Manager Installation Directory>/wwwroot/portal/conf フォルダーに移動して、config.json ファイルを開きます。次のプロパティを変更します。
{
"headerTitle": "API Manager Portal",
"adminHeaderTitle": "API Manager Administrator",
"headerLogoPath": "images/CF-Logo.png"
}
サーパー設定の指定
次の画面から API Manager サーバーを設定できます。
- 一般
- API データストア
- API 分析サーバー
一般
このページでは、API をホストする API プロキシまたは API ポータルをセットアップできます。
API プロキシ
企業では、既存および新規の顧客と通信します。利用者は、電話からデスクトップまで様々なデバイスを使用します。デバイスとやり取りする方法の 1 つは、API を使用する方法です。ただし、例えば、API のセキュリティ、可用性、監視など、いくつかの懸念事項があります。このような場合、API プロキシを定義します。API プロキシは、次のように機能します。
- セキュリティのトランスポート
- API の SLA、パフォーマンス、その他の監視
- API のアクセスレベルの定義
API プロキシは、バックエンドサービスから API を独立させます。いつバックエンドサービスを変更しても(例えば、コードの変更など)、アプリケーションは中断することなく実行されます。
API プロキシのセットアップ
-
-
「ポート」フィールドに、API プロキシのポートを入力します。例:http://localhost:5100(5100 はポート番号)。
-
プロキシの再起動時(手動またはスケジュール)に API プロキシのポートを有効にするには、「有効」チェックボックスを選択します。
-
「コンテキストルート」フィールドに、コンテキストルートの名前を入力します。コンテキストルートは、サーバー上のアプリケーションを識別します。例えば、アプリケーションのコンテキストルートが mycontextroot で、アプリケーションが http://localhost:5100 でホストされている場合、アプリケーションには、http://localhost:5100/mycontextroot でアクセスできます。
メモ:
ColdFusion のコネクターの設定を変更する場合は、「プロキシ」と「ポータル」の両方でコネクターの設定を再設定します。
プロキシコンテキストが「/」で、CF への コネクター の設定を選択する場合は、制限事項に関するメッセージがデフォルトのドキュメントに表示されます。
プロキシコンテキストが「/ something-else 」で、CF への コネクター の設定を選択する場合は、メッセージは表示されません。
-
「AJP ポート」フィールドに、Apache JServ Protocol(AJP)のポート番号を入力します。 AJP は、Tomcat を有効にして、Apache Web サーバーと通信します。
-
サーバーの AJP ポートを有効にするには、「AJP ポート」フィールドに隣接する「有効」チェックボックスを選択します。変更を保存するには、「保存」をクリックします。
-
「ドメイン URL」フィールドで、API エンドポイントをホストするドメインの URL を入力します。
「Advanced request Settings(リクエストの詳細設定)」セクション
- 「Max Header Size (in bytes)(ヘッダーサイズの上限 (バイト単位))」: API リクエストヘッダーの最大許容サイズ。
- 「Max Body Size (in bytes)(本文サイズの上限 (バイト単位))」: API リクエストの本文の最大許容サイズ。
- 「Max Total Files Upload Size (in bytes)(ファイルの合計アップロードサイズの上限 (バイト単位))」:アップロードするファイルに割り当てられる最大サイズ。
- 「Max No.Of Headers(ヘッダーの最大数)」:リクエストに含めることができるヘッダーの最大数。
- 「Max No.Of Parameters(パラメーターの最大数)」:リクエストに含めることができるクエリパラメーターの最大数。
ポータルのセットアップ
パブリッシャーは、ポータルを使用して、サブスクライバーが使用する API を作成します。ポータルでは、パブリッシャーは API を作成したり、特定のノードに対して API を制限したりできます。ポータルは、複数のノード上で実行できます。一方で、任意のノード上に API プロキシを設定できます。
-
「ポート」フィールドに、API ポータルのポートを入力します。
-
プロキシの再起動時(手動またはスケジュール)に API ポータルのポートを有効にするには、「有効」チェックボックスを選択します。
-
「AJP ポート」フィールドに、Apache JServ Protocol(AJP)のポート番号を入力します。 AJP は、Tomcat を有効にして、Apache Web サーバーと通信します。
-
サーバーの AJP ポートを有効にするには、「AJP ポート」フィールドに隣接する「有効」チェックボックスを選択します。変更を保存するには、「保存」をクリックします。
API データストア
データストアは、分散構成システムで、API Manager で使用されるメモリ内キャッシュです。API データストアには、次のような利点があります。
- 分散型
- 高速
- 拡張可能
- フェイルセーフ
データストア設定の構成
-
「ホスト」フィールドには、データストアのホスト名または IP アドレスを入力します。データストアはネットワークの内部に存在しても、外部に存在してもかまいません。
-
「ポート」フィールドに、データストアのポート番号を入力します。
-
「パスワード」フィールドに、データストアのパスワードを入力します。
-
「タイムアウト」フィールドに、タイムアウト期間を秒単位で入力します。
API 分析サーバー
指標を生成する API リクエストの数を設定します。詳しくは、「指標とロギング」を参照してください。
指標の設定
-
「クラスター名」フィールドに、ElasticSearch クラスターの名前を入力します。 これらのリクエストの分析は、ポータルに公開されます。詳しくは、「クラスターサポートのセットアップ」を参照してください。
-
ElasticSearch ノードのアドレスを HTTP ポートおよびクラスターポートとともに指定します。
- 指標に関連するデータは、クラスターポートを使用して ElasticSearch に送信されます。
- 分析ダッシュボードにレンダリングするデータは、HTTP ポートを使用して ElasticSearch から取得されます。
-
ElasticSearch クラスターのその他のノードを手動で追加するには、「アドレスを追加」をクリックします。
-
ElasticSearch ノードのアドレスを入力し、「HTTP ポート」フィールドと「クラスターポート」フィールドにポート番号を入力します。
-
「ソケットタイムアウト」フィールドに、ElasticSearch サーバーから個々のパケットを受信するときのタイムアウトを入力します。
単一のリクエストで ElasticSearch サーバーから大量のデータを取得する場合に、ネットワークのレイテンシが高いときは、タイムアウトを増やします。
-
分析サーバー設定で、クライアントは、クラスターが使用できるすべてのノードを追加する、残りのクラスターをスニッフできます。この機能を有効にするには、「スニッフ」を選択します。
「スニッフ」を選択し、設定で分析サーバーのアドレスを指定すると、API Manager が他のクラスターノードを自動的に検出し、ラウンドロビン方式で負荷を分散します。
-
「フラッシュ間隔」フィールドに、時間の間隔(秒単位)を入力します。これは、分析サーバーが指定された数の API リクエストを受け取って、データをディスクにフラッシュしてからの時間です。
-
「更新間隔」フィールドに、時間の間隔(秒単位)を入力します。これは、分析サーバーがすべてのインデックスを更新し、メモリ内バッファーが新しいセグメントに書き込まれてからの時間です。これらの変更はディスクにコミットされません。
-
「一括リクエストあたりのアクションの最大数」フィールドに、指標計算およびビジュアライゼーションのために分析サーバーにまとめて送信されるアクションの数を入力します。このフィールドに「1000」と入力した場合、分析サーバーに送信できるアクション数は 1,000 以下です。デフォルト値は、一括リクエストあたり 1,000 アクションです。
-
「一括リクエストの最大同時実行数」フィールドに、分析サーバーに送信される同時一括リクエストの数を入力します。例えば、このフィールドに「2」と入力した場合、サーバーに送信できる同時一括リクエスト数は 2 以下です。
-
「一括リクエストあたりの最大ボリューム」フィールドに、一括リクエストあたりのサイズを入力します。サイズは、メガバイト単位で計算されます。例えば、このフィールドに「5」と入力した場合、 一括 リクエストのサイズは 5 MB 以下です。
セキュリティ設定の指定
設定
この画面で、OAuth2 を設定できます。 このプロトコルを使用すると、リソース所有者の代わりに、または代理としてサードパーティアプリケーションにアクセス権の取得を許可することで、サードパーティアプリケーションに HTTP REST サービスへの制限されたアクセスを付与できます。
OAuth2 の設定
-
セキュリティ/設定をクリックします。
-
「暗号化シード」フィールドに、アプリケーションキー、ユーザーストア接続パスワードおよびメールサーバーパスワードを暗号化するための新しいシード値としてランダム文字列を入力します。この文字列は、常にランダム値です。
注意:暗号化シードを変更する場合、API Manager アプリケーションサーバーを再起動します。
-
「ポータルセッションタイムアウト」フィールドに、API パブリッシャーまたは管理者ポータルアプリケーションのセッションの有効期限が切れてからの秒数を入力します。
-
「パスワードリセットのタイムアウト (秒)」フィールドには、ユーザーがパスワードの変更リクエストを送信できる時間を表す秒数を入力します。
-
「ロックアウトまでの無効なログイン試行の最大回数」フィールドには、ロックアウトされるまでにログインを試みることができる回数の上限を入力します。例えば、このフィールドに "5" と入力した場合は、無効なパスワードを 5 回までは入力できます。
このフィールドにゼロを入力した場合、ユーザーは何回でもログインを試みることができます。ゼロを入力することはお勧めしません。
-
アカウントを恒久的にロックアウトするには、「無期限ロックアウト」チェックボックスを選択します。デフォルトでは、このチェックボックスはオフになっています。このオプションを選択した場合、ユーザーは、ログイン回数の上限までポータルへのログインを試みると、すぐに恒久的にロックアウトされます。
-
「アカウントのロックアウト期間 (秒)」フィールドには、ユーザーが無効なログインを上限回数まで試みた後で新しいパスワードを要求できるようになるまでの時間を秒単位で入力します。
-
「OAuth2 セッションのタイムアウト」フィールドに、OAuth2 セッションの有効期限が切れてからの秒数を入力します。セッションの後、アクセストークンおよび認証コードを取得するためのユーザー名とパスワードを入力します。
-
「OAuth2 アクセストークンのデフォルトタイムアウト」フィールドに、元のアクセストークンの有効期限が切れてからの、デフォルトの OAuth2 アクセストークンの期間を入力します。サブスクライバーは、アプリケーション設定でこの値を上書きできます。
-
「OAuth2 更新トークンのデフォルトタイムアウト」フィールドに、元の更新トークンの有効期限が切れてからの、デフォルトの OAuth2 更新トークンの期間を入力します。サブスクライバーは、アプリケーション設定でこの値を上書きできます。
-
「認証コードのタイムアウト」フィールドに、OAuth2 認証コードの有効期限が切れてからの秒数を入力します。
-
OAuth2 およびトークンエンドポイントの HTTPS のみ許可するには、「HTTPS 必須」チェックボックスを選択します。このチェックボックスを選択すると、プレーンな HTTP 接続を拒否します。
ユーザーストア
ユーザーストアは、ユーザーおよびユーザーロールに関する情報を格納するためのデータベースです。このデータベースには、ログイン ID、パスワード、名、姓、電子メールアドレスなどが格納されます。
LDAP、または JDBC および ODBC などのデータベース接続を使用したユーザーストアを作成できます。API Manager には、内部ユーザーストアが備わっています。
ユーザーストアを追加するには:
ユーザーストアの作成
-
セキュリティ/ユーザーストアをクリックします。
-
「ユーザーストアを追加」をクリックします。
-
コネクタタイプドロップダウンリストで、コネクタのタイプを LDAP Connector(LDAP コネクタ)または Database Table Connector(データベーステーブルコネクタ)から選択します。
データベーステーブルコネクタ
JDBC を使用してユーザーストアを作成できます。アプリケーションがデータベースへの接続に使用する情報を格納するためのデータベースに、接続文字列を作成できます。
「詳細」タブ
「詳細」タブには、次のフィールドが含まれます。
フィールド |
説明 |
名前 |
名前でユーザーストアを識別します。 |
ログオン ID |
ユーザーストアの一意の識別子。ポータルにログインする際に、この識別子を接頭辞として付けます。 |
説明 |
ユーザーストアに関する情報。 |
「無効」チェックボックス |
選択すると、ストアのユーザーによるコンシューマーアプリケーションへのアクセスを有効にします。 |
「接続」タブ
「接続」タブには、次のフィールドが含まれます。
フィールド |
説明 |
データベースサーバー名 |
データベースを実行するホストの名前。 |
データベースポート |
データベースサーバーのポート番号。 |
データベースユーザー名 |
テーブルに対する権限を持つユーザーの名前。 |
データベースユーザーパスワード |
ユーザーのパスワード。 |
データベース名前 |
テーブルを格納しているデータベースサーバーの名前。 |
JDBC ドライバー |
JDBC ドライバーのクラスの名前。 |
JDBC 接続 URL |
JDBC ドライバーの URL。詳しくは、JDBC ドライバーのドキュメントを参照してください。 |
データソースのパス |
JDBC データのソースへのパス。例:jdbc/SampleDataSource。 |
初期 JNDI プロパティ |
JNDI 標準環境プロパティのリスト。 |
「Configuration(設定)」タブ
「設定」タブには、次のフィールドが含まれます。
フィールド | 説明 |
ユーザーテーブル | ユーザーアカウントを格納しているテーブルの名前。 |
キー列 | テーブルの行を一意に識別する列の値。 |
ユーザーの名の列 | ユーザーの名。 |
ユーザーの姓の列 | ユーザーの姓。 |
ユーザーの電子メールの列 | ユーザーの電子メール。 |
パスワード列 | ユーザーのパスワードの値を保持するテーブルの列の名前。 |
ロールテーブル | ユーザーロールを格納しているデータベースのテーブルの名前。 |
ロールテーブルキー列 | ユーザーとそのロールのマッピングを格納しているテーブルの名前。 |
ユーザーロールマッピングテーブルユーザーキー列 | テーブルのユーザーアカウントに関連付けられた列の値。 |
ユーザーロールマッピングテーブルロールキー列 | テーブルのユーザーのロールに関連付けられた列の値。 |
「プーリング」タブ
「プーリング」タブには、次のフィールドが含まれます。
フィールド |
説明 |
アイドル接続の最大数 |
アイドル状態になれるデータベースへの最大接続数。 |
アイドル接続の最小数 |
アイドル状態になれるデータベースへの最小接続数。 |
接続待機タイムアウト |
プールがタイムアウトする前に接続を待機できる時間(ミリ秒単位)。 |
アクティブな接続の最大数 |
プールから同時に割り当てられる最大接続数。 |
アイドル接続の強制退去タイムアウト |
アイドル接続を削除する前に待機する時間(ミリ秒単位)。 |
「Advanced(上級)」タブ
「Advanced(上級)」タブには、次のフィールドが含まれます。
フィールド |
説明 |
Enable writing empty string(空の文字列の書き込みを有効にする) |
このチェックボックスを選択すると、テーブルスキーマに not-null と定義された列の null 値の代わりに空の文字列を書き込みます。 |
Name Quoting(名前に引用符を付ける) |
データベースの列名を引用符で囲みたい場合、このチェックボックスを選択します。 |
Validate Connection Query(検証接続クエリ) |
データベース接続を検証するための SQL クエリ。 |
JavaScript コネクタ
任意のデータベースに接続し、ユーザーを認証し、ユーザーをフェッチして、他のタスクを実行するための JavaScript コードを記述できます。
「詳細」タブ
「詳細」タブには、次の詳細が含まれます。
フィールド |
説明 |
---|---|
名前 |
ユーザーストアの名前。 |
ログオン ID |
ユーザーストアに対する ID。 |
説明 |
ユーザーストアに関する詳細。 |
無効 |
無効にした場合、ユーザーはアプリケーションにアクセスできません。 |
「スクリプト」タブ
「スクリプト」タブには、次の詳細が含まれます。
スクリプトモード:あらゆるイベントをスクリプトモードで記述します。
イベントモード:イベントのリストから JS イベント(searchUsers、getUser など)を追加します。例えば、イベント getUser を追加します。次のスクリーンショットには、ユーザーのリストをユーザーストアから取得するためのサンプルコードが表示されています。
JS ファイルをアップロード:ファイルをアップロードすると、そのファイルの内容が「スクリプト」タブに表示されます。ファイルを編集して保存することができます。変更を加えても、元のファイルには反映されません。
JavaScript 変数:変数をこのセクションで宣言します。
JavaScript イベントの一覧
onStoreStart
変数を初期化したり、プロパティを設定したり、ヘルパー関数を宣言したりします。次に例を示します。
var http = require("http"); // USe HTTP as client var pool = http.configure().pool({ "total" : 30, "perRoute": 20 }).proxy("localhost:8080").timeout({ "readtimeout": 20, "requesttimeout": 100 }).ssl({ "truststorename": "namegiveninadmin", "keystore": "admin" }).build(); var url = "お使いの URL"; var apiKey = "お使いの API キー";
auth
ユーザーストアが OAuth2 用に設定される場合に、そのユーザーストアのユーザーを認可します。また、パブリッシャー、サブスクライバーまたは管理者をユーザーストアに関連付けます。
function auth(username, password) { r authMap = { "username": username, "password": password, "options": { "multiOptionalFactorEnroll": false, "warnBeforePasswordExpired": false } }; print("response: " + JSON.stringify(authMap)); var response = pool.post(url + "authn") .header("accept","application/json") .header("Content-Type","application/json") .body(JSON.stringify(authMap)).asString(); if(response.status == 401) throw new Error("ユーザー名 / パスワードが無効です"); if(response.status == 200) { //parse Response print("received response " + response.body); var json = JSON.parse(response.body); if(json.status == "SUCCESS") {//save profile return true; } throw new Error("不明なエラー"); } else throw new Error("内部サーバーエラー"); }
searchUsers
ユーザーストア内のユーザーを検索したり、検索フィルターを指定したり、ページに返す検索結果の数を指定したりします。
function searchUsers(settings) { print("inside search users"); var response = pool.get(url + "users") .header("accept","application/json") .header("Content-Type","application/json") .header("Authorization","SSWS " + apiKey) .queryString("q",settings.filter) .queryString("limit", settings.pageSize) .asString(); print("received response " + response); if(response.status == 200){ var json = JSON.parse(response.body); if(json.length) { var users = []; for each (var user in json) { users.push(toAccount(user)); } return users; } return []; } else if(response.status == 401) { log.info("Okta API Key " + apiKey + " は無効/期限切れです。ユーザーを検索できません"); } throw new Error("内部サーバーエラーです。"); }
次のプロパティでユーザーの配列を返します。
- uniqueid
- username
- firstname
- lastname
- accountenabled
searchRoles
スコープにロールをタグ付けする場合に、OAuth2 と基本認証の両方についてスコープを検索します。
function searchRoles(settings) { print("inside search groups"); var response = pool.get(url + "groups") .header("accept","application/json") .header("Content-Type","application/json") .header("Authorization","SSWS " + apiKey) .queryString("q",settings.filter) .queryString("limit", settings.pageSize) .asString(); print("received response " + response); if(response.status == 200){ var json = JSON.parse(response.body); if(json.length) { var groups = []; for each (var group in json) { groups.push(toGroup(group)); } return groups; } return []; } else if(response.status == 401) { log.info("Okta API キー" + apiKey + " は無効/期限切れです。グループを検索できません"); } throw new Error("内部サーバーエラーです。"); }
検索結果は以下で返されます。
- uniqueidrolename
- rolename
- description
getUser
任意のロールまたはロール群に属するユーザーを取得します。
function getUser(username, needgroups) { // needgroups=True or false print("inside get user"); var response = pool.get(url + "users/" + username) .header("accept","application/json") .header("Content-Type","application/json") .header("Authorization","SSWS " + apiKey) .asString(); print("received response " + response); if(response.status == 200) { print(response.body); var acc = toAccount(JSON.parse(response.body)); if(needgroups) { var groups = getUserRoles(username); acc.userRoles = groups; // userRoles- list of unique ids of roles. } return acc; } else if(response.status == 401) { log.info("Okta API Key " + apiKey + " は無効/期限切れです。ユーザーを検索できません"); } else if(response.status == 404) { return null; } throw new Error("内部サーバーエラーです。"); }
getUserRoles
ユーザーのロールリストを取得します。
function getUserRoles(username) { print("inside get user roles"); var response = pool.get(url + "users/" + username + "/groups") .header("accept","application/json") .header("Content-Type","application/json") .header("Authorization","SSWS " + apiKey) .asString(); if(response.status == 200){ var json = JSON.parse(response.body); if(json.length) { var groups = []; for each (var group in json) { groups.push(toGroup(group)); } return groups; } return []; } else if(response.status == 401) { log.info("Okta API Key " + apiKey + " は無効/期限切れです。グループを検索できません"); } throw new Error("内部サーバーエラーです。"); }
検索結果は以下で返されます。
- uniqueid
- rolename
- description
getRoleMembers
ユーザーストア内のロールに属するユーザーを取得します。
function getRoleMembers(rolename) { print("inside get role members"); var response = pool.get(url + "groups/" + rolename + "/users") .header("accept","application/json") .header("Content-Type","application/json") .header("Authorization","SSWS " + apiKey) .asString(); if(response.status == 200){ var json = JSON.parse(response.body); if(json.length) { var users = []; for each (var user in json) { users.push(toAccount(user)); } return users; } return []; } else if(response.status == 401) { log.info("Okta API Key " + apiKey + " は無効/期限切れです。ユーザーのグループを検索できません"); } throw new Error("内部サーバーエラーです。"); }
次のプロパティでユーザーの配列を返します。
- uniqueid
- username
- firstname
- lastname
- accountenabled
onStartEnd
JavaScript コネクターを終了する前に実行する任意のヘルパー関数です。例えば、ログファイルを作成したり、値をメモリに格納したり、セッションを終了したりします。
function onstoreend(){ pool.shutdown(); }
詳細については、Nashorn のマニュアルを参照してください。
LDAP コネクタ
ユーザー認証に LDAP サーバーを利用するように API Manager を設定できます。この場合、LDAP サーバーがユーザーを作成および管理します。
「詳細」タブ
「詳細」タブには、次のフィールドが含まれます。
フィールド |
説明 |
名前 |
ユーザーストアの名前。名前でこのユーザーストアを識別します。 |
ログオン ID |
LDAP のユーザーストアの識別子。 |
説明 |
このユーザーストアに関する情報。 |
無効 |
このチェックボックスを選択すると、ストアのユーザーによるコンシューマーアプリケーションへのアクセスを有効にします。 |
「接続」タブ
「接続」タブには、次のフィールドが含まれます。
フィールド |
説明 |
ホスト |
LDAP サーバーの名前または IP アドレス。 |
TCP ポート |
LDAP サーバーのポート番号。このポートは、LDAP が SSL 接続をリッスンするポートと同じです。 |
ユーザーバインド DN |
LDAP サーバーに接続するためのバインド識別名(DN)。 バインド DN は、定義された検索ベース内で LDAP ディレクトリの検索を許可された、外部 LDAP サーバーのユーザーです。 バインド DN のロールは、LDAP クエリーフィルターを使用してディレクトリをクエリーし、ユーザーを検索することです。例えば、存在する可能性のあるバインドDN には、cn=administrator、cn=Users、dc=domain または c=com があります。 |
ユーザーバインド DN のパスワード |
LDAP サーバーに接続するためのパスワード。 |
SSL/TLS 有効 |
このチェックボックスを選択すると、セキュリティで保護された接続を使用します。 |
StartTLS 有効 |
このチェックボックスを選択すると、アプリケーションがセキュリティで保護されたリクエストを LDAP サーバーに送信するのを許可します。 |
Base Contexts(基本コンテキスト) |
ツリーを検索するための LDAP ツリーのポイント。 |
Failover Servers(フェイルオーバーサーバー) |
フェイルオーバーサーバーとして機能するすべてのサーバーの名前。例えば、「ldap://ldap.example.com:389/」は、フェイルオーバーサーバーのリストを表しています。最初のサーバーで失敗した場合、Java Naming and Directory Interface(JNDI)は、リストで次に利用可能なサーバーに接続します。 |
「Configuration(設定)」タブ
「設定」タブには、次のフィールドが含まれます。
フィールド | 説明 |
User Configuration(ユーザー設定) | LDAP でユーザーオブジェクトを作成するためのオブジェクトクラス。オブジェクトクラスは、LDAP のデータのタイプを表しています。オブジェクトクラスには、LDAP のエントリの属性が含まれます。objectclass はスキーマで定義されます。 |
LDAP Filter for Retrieving Accounts(アカウント取得用の LDAP フィルター) | LDAP からユーザーアカウントを取得するためのフィルター属性。 |
Account User Name Attributes(アカウントのユーザー名属性) | アカウントのユーザー名を表す 1 つまたは複数の属性。属性は、LDAP エントリのユーザー名を認証します。 |
User First Name Attribute(ユーザーの名属性) | LDAP アカウントのユーザーの名を表す属性。 |
User Last Name Attribute(ユーザーの姓属性) | LDAP アカウントのユーザーの姓を表す属性。 |
User Email Attribute(ユーザーの電子メール属性) | LDAP アカウントのユーザーの電子メールを表す属性。 |
Group Configuration(グループ設定) | LDAP でグループを作成するためのオブジェクトクラス。 |
LDAP Filter for Retrieving Groups(グループ取得用の LDAP フィルター) | LDAP からユーザーグループを取得するためのフィルター属性。 |
Group Name Attribute(グループ名属性) | LDAP アカウントのグループの名前を表す属性。 |
Group Membership Attribute(グループメンバーシップ属性) | LDAP グループのユーザーを格納する属性。 |
「Advanced(上級)」タブ
「Advanced(上級)」タブには、次のフィールドが含まれます。
フィールド |
説明 |
Use Paged Result Control(ページ化させた結果コントロールを使用) |
このチェックボックスを選択すると、ユーザーアカウントを取得する際に、LDAP で仮想一覧表示(VLV)の代わりにページ化された結果を使用します。VLV を使用すると、チャンクでサイズの大きいディレクトリをクエリできます。 例えば、ユーザー「ou」が数多く含まれるディレクトリで、次が可能です。 dc=demo、dc=local + ou=DemoGroups(100,000 グループ) + ou=DemoUsers(100,000 ユーザー) アプリケーションのスクロール可能な、またはページ化されたウィンドウにユーザーグループ「ou」の情報を提示したい場合、100 の結果ごとに 1000 ページを取得するのは、非効率です。この手法は、リソースを消費し、帯域幅を浪費します。一方、VLV は、大量のデータセットをソートルールを使用してクエリします。例えば、VLV を使用すると、LDAP の organizationName 順で最初の 50 ユーザーをソートできます。 |
LDAP Referral Handling(LDAP の Referral 処理) |
LDAP referral の follow または ignore のどちらかです。LDAP referral を使用すると、LDAP ツリーを複数の LDAP サーバーにわたって分散させることができます。したがって、LDAP サーバーは、完全なディレクトリ情報ツリー(DIT)を格納していなくても、他の LDAP サーバーを参照できます。特定のディレクトリを参照する場合、LDAP サーバーは、ツリーの別のサーバーを参照した後で、referral を返します。 |
ユーザーの追加
API Manager のユーザー管理は、ユーザー、ロール、およびそのアクセスレベルの定義および管理に関与します。ユーザーの追加または削除、ロールの割り当て、ユーザーの検索、ユーザーストアの管理および LDAP またはデータベース接続からの外部ユーザーのインポートが可能です。
ユーザーを追加するには:
-
セキュリティ/ユーザーをクリックします。
-
「外部ユーザーをインポート」をクリックして、データベースまたは LDAP 接続からユーザーを取得します。
-
ユーザーを追加するには、ユーザーストアを選択して、「ユーザーを追加」をクリックします。次のページが表示されます。
-
- 「ユーザー名」フィールドに、新しいユーザーの一意の識別子を入力します。
- 残りのフィールドに、ユーザーの属性を入力します。
- 新しいユーザーに適切なロールを、「パブリッシャー」、「サブスクライバー」または「管理者」から選択します。詳しくは「ロール」を参照してください。
- 「ユーザーを追加」をクリックして、ユーザーストアにユーザーを追加します。
SAML ID プロバイダー
このシナリオでは、API Manager に設定されたサービスプロバイダーにユーザーがアクセスしようとします。API Manager がサービスプロバイダーに SAML トークンを送信します。サービスプロバイダーでは、ユーザーを識別し、トークンを認証します。正常に識別された場合、ユーザーはサービスプロバイダーにログインします。
API Manager を ID プロバイダーとして設定するには:
-
API Manager に管理者としてログインします。セキュリティ/ID プロバイダー/SAML をクリックします。
-
「一般」タブで、次の詳細を入力します。
名前
SAML ID プロバイダーの名前。
表示名
表示される IDP 名。
有効
IDP を有効または無効にします。
説明
IDP の説明。
サービスプロバイダー
作成済みの SP を選択します。
-
「メタデータ」タブでは、SAML メタデータをインポートするための 3 つのオプションがあります。次の詳細を入力します。
SAML URL
メタデータの取得に使用される URL。
SSO URL
ログインに使用される URL。
署名認証アサーション
アサーションを送信する前に署名する場合は有効にします。
署名証明書
署名に使用される証明書。
-
「属性マッピング」タブで、次の詳細を入力します。
デフォルトのロール
パブリッシャー、サブスクライバー、管理者のいずれかを選択します。
ロール属性名
API Manager と IDP の間のロール識別子。
ロール属性の区切り記号
ロール属性の表示に使用される区切り記号。
属性マッピング
Okta でアプリケーションを設定するときに入力したのと同じ値を入力します。
-
「詳細設定」タブで、次の詳細を入力します。
ユーザー ID 位置
メタデータで定義されているユーザー名の識別子。
クロックスキュー (秒)
API Manager と IDP の間のローカル時間のオフセット。
SAML サービスプロバイダー
このシナリオでは、サービスプロバイダーが API Manager に SAML トークンを ID プロバイダーとして送信します。API Manager では、適切な応答をサービスプロバイダーに送信し、サービスプロバイダーが SAML メタデータを認証して、ユーザーにアプリケーションへのログ イン を許可します。
API Manager を ID プロバイダーとして有効にしたうえで、外部の認証機関で署名されたキーペアが必要です。次のいずれかの方法でキーペアを生成できます。
- キ ーストア の GUI ベースのツールを使用する。
- Java コマンドラインを使用する。詳しくは、https://helpx.adobe.com/jp/coldfusion/api-manager/configuring-ssl.html#キーペアと証明書の生成 を参照してください。
サービスプロバイダーをセットアップするには:
セキュリティ/サービスプロバイダー/SAML をクリックします。次の詳細を入力します。
名前 |
サービスプロバイダーの名前。 |
表示名 |
表示される名前。 |
有効 |
サービスプロバイダーを有効または無効にします。
|
説明 |
サービスプロバイダーの説明。 |
エンティティ ID |
SAML エンティティ(この場合はサービスプロバイダー)のグローバルに一意な名前。 |
SSO URL |
ID プロバイダーが SSO メッセージを受信する場所。 |
ACS URL |
SAML アサーションが送信される場所。 |
署名リクエスト |
|
署名済みアサーション |
|
IDP SSO を有効化 |
この チェックボックス をオンにすると、ID プロバイダーの シングルサインオン サービスが署名済みの認証リクエストを受信できるようになります。 |
署名キーストア名 |
|
|
|
暗号化キーストア名 |
|
|
|
キーストア
キーストアは、SSL 暗号化のインスタンスに使用されるセキュリティ証明書(認証証明書か公開キー証明書のどちらか)および対応する秘密キーのリポジトリです。
次のいずれかの方法でキーストアを使用できます。
- キ ーストア には、SSL サーバーが SSL クライアントに対して自分自身を認証するのに使用する秘密キーと証明書が格納されています。慣例的に、そのようなファイルを キーストア と呼びます。
- 信頼ストア として使用する場合、このファイルには、信頼できる SSL サーバーの証明書、または、サーバーを識別するための信頼できる認証機関の証明書が格納されています。秘密キーは、 信頼ストア にはありません。
キーストアを作成するには: |
キーストアをインポートするには: |
1. 「キーストアを作成」をクリックします。 2. キーストアの名前とパスワードを設定します。 3. 「作成」をクリックします。 4. 「証明書をインポート」をクリックします。 5. 証明書のエイリアスを入力し、 keytool コマンドラインまたは GUI を使用して作成した証明書ファイルを選択します。 6. 「証明書をインポート」をクリックします。 |
1. 「キーストアをインポート」をクリックします。 2. 次の詳細を入力します。 a. キーストアの名前。 b. キーストアのパスワード。 c. 既に作成してある証明書を選択します。 d. キーストアのタイプ(JKS または PKCS)を選択します。 e. (オプション)証明書のエイリアスを入力します。 3. 「作成」をクリックします。 |
SAML ID プロバイダー(IDP)のセットアップ
例えば、SAML サービスプロバイダー(SP)の詳細を使用して Okta を ID プロバイダーとしてセットアップできます。まず最初に、Okta にアプリケーションをセットアップします。
-
管理者権限で Okta 組織にログインします。
-
統合タイプとして SAML 2.0 を使用してアプリケーションを作成します。
-
「Configure SAML」タブで、次の詳細を入力します。
a. 「Single sign on URL」フィールドに "http://localhost:9000/amp/saml/SSO/default/localhost" と入力します。これは、API Manager の SAML SP 設定で指定した ACS URL と同じ URL です。
b. 「Entity ID」に "http://localhost/amp/apimanager" と入力します。これは、API Manager の SAML SP 設定で指定したのと同じ URL です。
c. 「Attribute Statements」セクションで、次の属性を追加します。
i. firstname を "user.firstName" に設定
ii. lastname を "user.lastName" に設定
iii. email を "user.email" に設定
-
「Next」をクリックし、「Finish」をクリックします。グループを作成してユーザーを割り当てるには、「Directory/Groups」をクリックします。
-
グループを追加してメンバーを割り当てるには、「Add Group」をクリックします。
SLA の設定
API Manager では、利用者は、異なるサービスレベルでアプリケーションまたはリソースを使用できます。SLA 設定は、頻度の制限およびスロットルを通じてアクセス制御を強制します。 スロットル層は、API の収益化、セキュリティ制限、インフラストラクチャの問題などによって、特定の期間にわたって API に対するヒットの数を制限します。
例えば、API に対するスロットル層を設定して、適切にアクセスを制限できます。各層は、日、週、または月ごとの最大リクエスト数を定義します。
また、SLA の頻度制限を秒、分、または時間単位で設定することもできます。
次に説明する方法に従って、API Manager に独自の層を追加できます。
SLA の追加
-
「SLA 設定」をクリックします。次のページが表示されます。
-
頻度制限アルゴリズムを選択します。 API Manager では、「ローリング」と「固定」の 2 種類のアルゴリズムを使用して頻度を制限できます。
固定期間アルゴリズムでは、期間は、時間単位の開始から時間単位の終了までと見なされます。例えば、API リクエストが行われた時間枠に関係なく、少しの間、期間は 0 ~ 60 秒と見なされます。
周期的期間アルゴリズムでは、期間は、リクエストが行われた時点のわずかな時間から時間単位の終了までと見なされます。例えば、API 呼び出しに対する 2 つのリクエストが、1 分間のうち 30 秒および 40 秒の時点で行われた場合、2 つのリクエストは、その分の 30 秒から、最大で次の分の 30 秒までと見なされます。
詳しくは、頻度制限を参照してください。
-
「SLA 名」フィールドに、新しい SLA の名前を入力します。
「レート制限」フィールドに、SLA の API リクエスト頻度制限を入力します。 秒、分または時間ごとのリクエスト数に対する API リクエスト頻度のみ制限できます。
「スロットル制限」フィールドに、SLA の API スロットル制限を入力します。 秒、分または時間ごとのリクエスト数に対する API リクエスト頻度のみ制限できます。
スロットル制限を、「ハード」または「ソフト」から選択します。
- ハード:このオプションを選択すると、API リクエストの数は、スロットル制限を超えることはできなくなります。
- ソフト:このオプションを選択すると、1%超えた API リクエスト制限を設定できます。例えば、「制限超過」を 90%に設定すると、API リクエストの数は、所定の制限の 90%を超えることができます。
-
「制限を通知」フィールドに、API リクエストの数が制限に達した際に通知を受け取るその制限(パーセント単位)を入力します。
-
「制限超過」フィールドに、API リクエストの数が超過できる制限(パーセント単位)を入力します。
-
SLA が API パブリッシャーからの承認を必要とする場合、「承認が必要」チェックボックスを選択します。
SLA の編集
SLA を編集してプロパティを変更できます。「既存 SLA」リストから SLA を選択します。
-
「編集」をクリックします。次のページが表示されます。
-
SLA のすべてのプロパティを更新して、「SLA を更新」をクリックします。
マルチテナント組織の作成
マルチテナント組織を作成するには、左側のパネルの「組織」をクリックし、「組織を作成」をクリックします。
次の詳細を入力します。
「作成」をクリックします。
詳しくは、API Manager のマルチテナント機能を参照してください。
クラスター情報の表示
API Manager で設定されたすべてのクラスターのリストを確認できます。クラスターのプロキシポート、ポータルポートなども確認できます。
キャッシュ
出力キャッシュに保存できるレスポンスの最大サイズをバイト単位で定義して、最大レスポンスサイズを設定します。タイムアウトも秒単位で指定します。
ColdFusion ディスカバリサーバー
ColdFusion の VM 以外の環境で公開されている REST サービスを確認する場合は、CF ディスカバリサーバー設定ページで ColdFusion サーバーを設定します。
-
プロトコルドロップダウンリストで、HTTP または HTTPS を選択します。
-
「名前」フィールドに、ColdFusion サーバーの名前を入力します。
-
「アドレス」フィールドに、CF サーバーのホストとポート番号を入力します。
-
「コンテキスト」フィールドに、CF サーバーの REST サーブレットコンテキストを入力します。
-
「ユーザー名」および「パスワード」フィールドに、ColdFusion へのログインに使用する資格情報を入力します。
通知の設定
API Manager は、アラートまたは注意が必要なユーザーイベントに関する通知を送信します。パブリッシャーおよび利用者向けの電子メール通知を設定できます。
電子メールの設定
-
通知/メールをクリックします。次のページが表示されます。
-
「メールサーバー」フィールドに、Simple Mail Transfer Protocol(SMTP)メッセージを送信するサーバーの名前を入力します。または、メールサーバー(例:mail.company.com)やメールサーバーの IP アドレス(例:127.0.0.1)を入力することもできます。
-
「ポート」フィールドに、メールサーバーのポート番号を入力します。
-
「送信元電子メールアドレス」フィールドに、ユーザーに送信されるすべてのパスワードリセット通知 メール の送信元となる電子メールアドレスを入力します。
-
「ユーザー名」および「パスワード」フィールドに、メールサーバーで認証するユーザーの資格情報を入力します。
-
「タイムアウト」フィールドに、メールサーバーからの応答をAPI Manager が待機する時間(秒単位)を入力します。
-
「プロトコル」フィールドに、メールサーバーのメッセージングプロトコルを入力します(例:SMTP)。
-
メールサーバーへの接続で Transport Level Security(TSL)を有効にするには、「メールサーバーへの TLS 接続を有効にする」チェックボックスを選択します。 Transport Layer Security(TLS)は、ネットワーク内のアプリケーションとユーザーの間のプライバシーを確保するプロトコルです。サーバーとクライアントが通信する場合、TLS は通信のセキュリティを確保します。
パスワードリセット用の電子メールテンプレートの編集
パスワードリセット用の電子メールテンプレートを編集するには、{API Manager HOME}/conf/templates に移動し、ファイル resetpassword .vm を開きます。
件名と本文を変更できます。
ログの設定
このページでは、デバッグログを生成するモジュールを選択します。次に例を示します。
- スタートアップ、シャットダウンおよびクラスターの更新中にメッセージが記録されます。
- リクエストが送出されるとメッセージが記録されます。
- API がリクエストを解決するとメッセージが記録されます。
デバッグしたい特定の状況に対して、デバッグを有効にすることができます。例えば、API の作成中に問題がないかをチェックしたい場合、「ポータル」セクションの「パブリッシャー」チェックボックスをオンにします。
これで、デバッグログを適切に管理できます。
分析ダッシュボードの表示
分析ダッシュボードは、ノードから実行している API の数、API リクエストの数およびシステム統計を表示するのに役立ちます。API Manager はAPI 処理情報として情報を収集します。グラフやチャートに突然のスパイクを確認した場合、暫定措置を取ることができます。
特定のデータ(例えば、API 名、パブリッシャー名、グラフのフィールドなど)をクリックすることで、そのフィールドに基づいてダッシュボード全体をフィルタリングできます。
「分析」をクリックして、ダッシュボードを表示します。
管理者ポータルには、次の 3 種類のダッシュボードがあります。
- ホーム
- パブリッシャー API
- パブリッシャー
ホーム:ホームダッシュボードパネルでは、次のダッシュボードを表示できます。
Request Count for Nodes(ノードのリクエスト数)
API を実行しているノードの IP およびポートを表示できます。また、API によるリクエスト数も表示できます。ビジュアライゼーションにマウスポインターを置くと、詳細が表示されます。
Total Request Count(合計リクエスト数)
API によるリクエスト数を表示できます。
Consumed Metrics(使用済み指標)
API の平均応答時間(ミリ秒単位)、および API の平均送受信データ(KB 単位)を表示できます。
Average Request Count(平均リクエスト数)
API リクエスト数の折れ線グラフを表示できます。例えば、今日、今週、今月、過去数分間、過去 30 分間、過去 5 年間など、期間に応じてデータをさらにフィルタリングすることができます。軸にマウスポインターを置くと、期間内の API リクエスト数が表示されます。
Average Response Time(平均応答時間)
このビジュアライゼーションを使用すると API の平均応答時間を表示できます。この時間は、ミリ秒単位です。期間に応じて日付をフィルタリングできます。
パブリッシャー API:パブリッシャー API ダッシュボードでは、パブリッシャーからの各 API の詳細、API の数、パブリッシャーの数、API の応答時間などを確認できます。
パブリッシャーに基づいてリクエストとダッシュボード全体をフィルタリングできます。
円グラフまたは折れ線グラフにマウスポインターを置くと、詳細が表示されます。
1 |
パブリッシャーによる API リクエスト数の円グラフ。 |
2 |
パブリッシャーによる API リクエスト数。 |
3 |
API リクエスト数。 |
4 |
API 数。 |
5 |
API を格納するクラスターのノード数。 |
6 |
パブリッシャーの数。 |
パブリッシャー:パブリッシャーダッシュボードでは、API リクエスト数、パブリッシャーの数、パブリッシャーごとの平均データ使用量などのビジュアライゼーションを確認できます。
パブリッシャーに基づいてリクエストとダッシュボード全体をフィルタリングできます。
円グラフまたは折れ線グラフにマウスポインターを置くと、詳細が表示されます。
1 |
パブリッシャーによる API リクエスト数の円グラフ。 |
2 |
API を格納するクラスターのノード数。 |
3 |
API リクエスト数。 |
4 |
期間内に少なくとも 1 回のリクエストを行ったパブリッシャーの個別の数。 |
5 |
すべてのパブリッシャーによる API リクエスト数。 |
6 |
期間に応じたパブリッシャーによる API リクエスト数。 |
ビジュアライゼーションの作成
カスタムのビジュアライゼーションを作成して、将来の分析のために保存することができます。次の手順に従って、ビジュアライゼーションを作成します。
-
ビジュアライゼーションを作成するには、「Visualize(ビジュアライズ)」タブをクリックします。
-
API 情報からの面グラフ、データテーブル、円グラフなどの形式でビジュアライゼーションを作成できます。例として、API 分析から面グラフを作成します。リストから「Area chart(面グラフ)」をクリックします。
-
次から選択します。
-
新規検索からビジュアライゼーションを作成します。「From a new search(新規検索から)」を選択します。ドロップダウンリストに、次のインデックスパターンを確認できます。
-
X 軸のデータポイントを選択して、「Apply(適用)」をクリックします。
Y 軸にAPI リクエスト数、X 軸に API タイムスタンプを示す面グラフが表示されます。
期間によるデータのフィルタリング
分析ページでは、期間に応じて結果をフィルタリングできます。
次の 3 つのオプションがあります。
- Quick(クイック)
- Relative(相対)
- Absolute(絶対)
-
次に示すように、時間のフィルターをクリックします。
-
次に示すように、リストから期間を選択します。
「Today(今日)」を選択すると、過去 24 時間のすべての API の分析が表示されます。
-
「Relative(相対)」をクリックします。指定した日時から現在の日時までのデータをフィルタリングできます。
-
「Absolute(絶対)」をクリックします。日付に応じて結果をフィルタリングできます。
フィールドに基づいたデータのフィルタリング
フィールドに従ってダッシュボードをフィルタリングし、API のアクティビティの完全な分析レポートを取得することができます。フィルターを適用すると、それに応じてダッシュボードが変化し、結果がグラフィカルに表示されます。
フィールドに従ってダッシュボードの情報をフィルタリングするには:
-
ダッシュボードの種類を次の中から選択してクリックします。
- ホーム
- パブリッシャー API
- パブリッシャー
-
任意のダッシュボードを選択し、そのグラフの上にマウスポインターを置くと、フィールドとその値が表示されます。以下のスナップショットには、特定の時間内に発生したすべてのパブリッシャー API のリクエスト数のフィールド値が表示されています。
API usweather のすべてのフィールド値とその API の呼び出し回数を示すリストが表示されます。
-
グラフをクリックします。選択した API のすべての属性を示す新しいダッシュボードが表示されます。
組織
管理者は、API Manager に組織またはテナントを作成できます。マルチテナント機能の目的は、同時に複数のユーザー(テナント)がログインして単一のサーバー/クラスターをテナントごとに独立して使用できるようにすることで、リソースの共有を最大化することです。
組織を作成しテナントを管理するには、API Manager のマルチテナント機能を参照してください。
API Manager のアップデート
「更新」セクションでは、製品アップデートの確認と製品の更新を ブラウザーインターフェイス 自体から実行できます。
Administrator コンソールの左側のナビゲーションパネルで「更新」をクリックすることで、製品アップデートがあるかどうかを確認します。アップデートには、ColdFusion 2016 API Manager のホットフィックスやセキュリティ ホットフィックス が含まれています。
使用可能なアップデート
「アップデートを確認」をクリックすると、インストール可能なホットフィックスアップデートがあるかどうかを確認できます。
次のいずれかを選択できます。
「ダウンロード」:ファイルをダウンロードし、後でインストールできるように <api_manager_home>/hf-updates/ に格納します。
「ダウンロードとインストール」:ホットフィックスをダウンロードし、サイレントインストールを実行します。
インストール済みアップデート
ColdFusion 2016 API Manager のすべてのインストール済みホットフィックスアップデートがリストされます。
設定
アップデートを通知するかどうかやアップデートを自動的に確認するかどうかなど、アップデートの環境設定を指定するオプションが用意されています。
ローカルアップデートサイトを設定した場合は、そのサイトの URL を指定してアップデートを取得することもできます。
API Manager のアップデートの通知
ColdFusion 2016 API Manager のこのリリースでは、使用可能なアップデートがある場合、管理者ポータルにログインすると、画面の上部に通知が表示されます。
通知アイコンをクリックすると、「更新」画面が開き、使用可能なすべてのアップデートが表示されます。