API 権限付与の利用シーンについて説明します。このトピックでは、API 権限付与を有効にし、権限付与ルールを設定し、権限付与インターフェイスを定義し、これらのルールを API に適用する方法について説明します。
機能紹介
API 権限付与機能を使用すると、Mobile Gateway Service (MGS) 上で一般的な API アクセス権限付与ルールを定義できます。
ゲートウェイ管理で権限付与 API (API A) を作成・設定し、ビジネス API (API B) の設定で API B に関連付けることができます。
クライアントがバックエンドのビジネス API (API B) にリクエストを送信すると、MGS は API 権限付与の設定に基づいてリクエストヘッダーまたは cookie から権限付与パラメーターを抽出します。その後、MGS はこれらのパラメーターをコンテキストに配置し、関連付けられた権限付与 API (API A) を呼び出します。API A のサーバーは、コンテキスト内のパラメーターを使用してビジネス権限のチェックを実行する必要があります。
チェックが成功した場合、MGS はプリンシパルと呼ばれる結果をリクエストヘッダーに追加し、リクエストをバックエンドのビジネス API (API B) に転送します。キャッシュが有効になっている場合、MGS はプリンシパルをキャッシュして権限付与のパフォーマンスを向上させます。

利用シーン
シナリオ 1
顧客が分散セッションを使用しているケースです。ユーザーがログインすると、セッション ID が生成されます。権限付与のプロセスは次のとおりです。
ユーザー A がログインをリクエストします。ログインが成功すると、セッション ID とセッション情報が生成され、
sessionId: {username:A, age:18, ...}のように分散キャッシュに保存されます。その後、セッション ID がクライアントに送信されます。ユーザー A がログイン権限付与を必要とする API をリクエストします。ゲートウェイはリクエストヘッダーからセッション ID を取得し、権限付与システムに送信します。権限付与システムはセッション ID を使用して分散キャッシュからユーザー情報を取得し、
{username:A, age:18,...}をゲートウェイに返します。ゲートウェイはログインが成功したことを確認し、
{username:A, age:18,...}をリクエストヘッダーに追加して、リクエストをバックエンドビジネスサーバーに転送します。
シナリオ 2
このシナリオでは、ハッシュベースのメッセージ認証コード (HMAC) に基づくクライアント側の権限付与スキームについて説明します。プロセスは次のとおりです。
ユーザー A が正常にログインすると、
token=hmac(username+password)のようなトークンがクライアントに送信されます。ユーザー A がログイン権限付与を必要とする API をリクエストします。ゲートウェイはヘッダーからトークンを取得し、権限付与システムに送信します。権限付与システムは HMAC を再計算します。トークンが一致する場合、システムは
{username:A, age:18,...}のようなユーザー情報をゲートウェイに返します。ゲートウェイはログインが成功したことを確認し、
{username:A, age:18,...}をリクエストヘッダーに追加して、リクエストをバックエンドビジネスサーバーに転送します。
手順
権限付与ルールの設定
mPaaS コンソールにログインします。左側のナビゲーションウィンドウで、[バックエンド接続] > [Mobile Gateway Service] を選択します。
[ゲートウェイ管理] タブを選択します。[API 権限付与] で、[権限付与 API の作成] をクリックします。または、既存の権限付与ルールの一覧で、変更したいルールを見つけ、[操作] 列の [詳細] をクリックします。権限付与ルールの設定ページが開きます。
権限付与 API 名:必須。権限付与ルールの名前です。
権限付与 API:必須。リクエストの権限付与を検証するために使用される API です。
権限付与結果のキャッシュ:権限付与の検証結果をキャッシュするかどうかを示します。
キャッシュ TTL:検証結果のキャッシュの有効期間です。
ID ソース:[ソースフィールドの追加] をクリックした場合は、権限付与に使用されるリクエストパラメーターと、以下のフィールドで構成されるリクエスト ID を入力します。
場所:パラメーターの場所 (
headerまたはcookie) です。フィールド:パラメーターの名前です。
説明API リクエストに ID ソースフィールドがない場合、権限付与の検証は失敗します。
オーソライザーインターフェイスの定義
バックエンドシステムが提供する権限付与インターフェイスが HTTP タイプの場合、権限付与 API が POST メソッドを使用するように設定する必要があります。
権限付与の関連付けを追加する前に、業務システムで Auth API を開発する必要があります。API が権限付与の検証を必要とする場合、Auth API を呼び出してチェックを実行します。Auth API のリクエストと応答は、以下の標準に従う必要があります。
AuthRequest
public class AuthRequest {
private Map<String,String> context;
}AuthResponse
public class AuthResponse {
private boolean success;
private Map<String,String> principal;
}インターフェイス例
@PostMapping("/testAuth")
public AuthResponse testAuth(@RequestBody AuthRequest authRequest) {
String sid = authRequest.getContext().get("sid");
Map<String, String> principal = new HashMap<>();
principal.put("uid", sid + "_uid");
AuthResponse authResponse = new AuthResponse();
authResponse.setSuccess(true);
authResponse.setPrincipal(principal);
return authResponse;
}権限付与の応答の
successフィールドがtrueの場合、ゲートウェイはキャッシュポリシーに基づいてprincipal情報をキャッシュします。その後、ゲートウェイはprincipal情報をリクエストヘッダーに追加し、バックエンドの業務システムに渡します。プリンシパルがない場合でも、空の Map を渡す必要があります。権限付与の応答の
successフィールドがfalseの場合、ゲートウェイはエラーコード 2000 を返します。クライアントは、ログインダイアログボックスの表示など、対応する操作を実行する必要があります。
権限付与ルールの使用
権限付与ルールを設定した後、API 設定ページに移動します。[詳細設定] > [API 権限付与] で、ルールを選択して API の権限付与を有効にします。
API 権限付与を使用するには、[ゲートウェイ管理] ページで [API 権限付与] 機能が有効になっていることを確認してください。この機能を有効にするには、次の手順を実行します。
mPaaS コンソールにログインします。左側のナビゲーションウィンドウで、[Mobile Gateway Service] メニューをクリックします。
[ゲートウェイ管理] タブで、[API 権限付与] ボタンがオンになっていることを確認します。
API がバックエンドシステムにリクエストを送信する前に、権限付与チェックが実行されます。チェックに合格した場合、ゲートウェイはリクエストを受け入れ、バックエンドシステムにルーティングします。それ以外の場合、ゲートウェイはリクエストを拒否し、呼び出し元は権限付与失敗のエラー応答を受け取ります。