Microservices Engine (MSE) クラウドネイティブ ゲートウェイでは、認証されたコンシューマーからのアクセスのみを許可するように、ルートの認証ルールを設定できます。このトピックでは、コンシューマー認証の設定方法について説明します。
背景情報
グローバル認証は、集中ログオン認証などのTo Consumer (ToC) シナリオに適しています。ルート認証とコンシューマー認証は、パートナーに API 操作の権限を付与するなどのTo Business (ToB) シナリオに適しています。
項目 | グローバル認証 | ルート認証とコンシューマー認証 |
シナリオ | 集中ログオン認証などのToC シナリオ。 | パートナーに API 操作の権限を付与するなどのToB シナリオ。 |
主な違い | 認証を有効にすると、認証も有効になります。 | 認証を有効にした後、認証設定を行う必要があります。 |
エントリ ポイント | Security Management > Global Authentication |
|
JSON Web Token ( JWT ) に基づく認証の設定 |
|
|
認証設定 | 認証ルールを作成する際に、ホワイトリストまたはブラックリストを選択し、Domain Name フィールドと Path フィールドを指定します。
|
|
コンシューマーの作成
MSE コンソール にログオンします。上部のナビゲーション バーで、リージョンを選択します。
左側のナビゲーション ペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。
ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。
左側のナビゲーション ペインで、Security Management > Consumer Authentication を選択します。
Create Consumer をクリックします。
パラメーターを設定し、OK をクリックします。

次の表にパラメーターを示します。
パラメーター
説明
Consumer Name
コンシューマーの名前。
Consumer Description
コンシューマーの説明。
Authentication Type
コンシューマーでサポートされている認証方法。
Key Type
Symmetric Key:コンシューマーに基づいて変化するデフォルトの JWKS が生成されます。デフォルトの JWKS には、トークンの暗号化または復号化に使用するキーが含まれています。
Asymmetric Key:完全な JWKS 設定を入力する必要があります。トークンは秘密キーを使用して暗号化されます。ゲートウェイは JWKS の公開キーに基づいて復号化を実行します。
JWKS
JWKS 設定を入力します。JWKS の仕様の詳細については、「JSON Web Key ( JWK )」をご参照ください。
JWT Token
JWT トークンを設定します。
Type:トークンのタイプ。デフォルト値は HEADER です。
Key:トークンの名前。
Prefix:トークンのプレフィックス。トークンを検証するために必要なパラメーターを設定します。デフォルトでは、トークンには Bearer プレフィックスが含まれており、Authorization ヘッダーに格納されています。例:Authorization: Bearer <token>。
Enable Passthrough:このオプションを選択すると、トークンはバックエンド サービスに渡されます。
Consumer Identity in JWT Payload
コンシューマーの識別に使用する JWT ペイロード内のキーと値。デフォルトでは、キーは uid で、値はランダムな文字列です。ビジネス要件に基づいて値を変更できます。
次のコードは、前の図の設定に基づいてコンシューマーが作成された場合の JWT トークンのペイロードです。
{ "uid": "11215ac069234abcb8944232b79ae711" }
トークン生成方法
このセクションでは、Java でトークンを生成する例を示します。他のプログラミング言語では、関連ツールを使用してキーペアを生成できます。
Maven プロジェクトを作成し、次の依存関係をプロジェクトに追加します。
<dependency>
<groupId>org.bitbucket.b_c</groupId>
<artifactId>jose4j</artifactId>
<version>0.7.0</version>
</dependency>デフォルトの対称キーを使用してトークンを生成する
コードの設定:
privateKeyJson設定では、コンシューマーの作成時に使用する JWKS を指定します。コンシューマーの作成時に JWKS を記録するか、コンシューマーの作成後にコンシューマーの基本設定ページから JWKS を取得できます。
コンシューマー ID を設定します。
claims.setClaim("uid", "11215ac069234abcb8944232b79ae711")設定では、コンシューマー ID を指定します。コンシューマーの作成時にコンソールによって自動的に生成されます。ロジックに基づいてコンシューマー ID を変更できます。
コンシューマーの作成後に、コンシューマーの基本設定ページでコンシューマー ID を取得することもできます。

暗号化アルゴリズムを設定します。
jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.HMAC_SHA256)設定では、暗号化アルゴリズムを指定します。これは JWKS と一致している必要があります。説明次の暗号化アルゴリズムがサポートされています:ES256、ES384、ES512、RS256、RS384、RS512、PS256、PS384、PS512、HS256、HS384、HS512、EdDSA。

対称暗号化を使用する場合は、「k」をデコードする必要があります。
jws.setKey(new HmacKey(Base64.decode(JsonUtil.parseJson(privateKeyJson).get("k").toString())));有効期限を設定します。有効期限は 7 日未満にする必要があります。有効期限に達した後は、セキュリティを確保するために新しいトークンを生成することをお勧めします。
... NumericDate date = NumericDate.now(); date.addSeconds(120*60); claims.setExpirationTime(date); claims.setNotBeforeMinutesInThePast(1); ...ビジネス要件に基づいて、JWKS
PAYLOADにカスタム パラメーターを追加できます。
非対称キーを使用してトークンを生成する
コードの設定:
privateKeyJsonパラメーター、コンシューマー ID、および有効期限は、対称暗号化アルゴリズムを使用する場合と同じように設定します。jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256)設定では、暗号化アルゴリズムを指定します。暗号化アルゴリズムは JWKS と一致している必要があります。非対称暗号化アルゴリズムを使用する場合は、暗号化に秘密キーが必要です。
... jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256); PrivateKey privateKey = new RsaJsonWebKey(JsonUtil.parseJson(privateKeyJson)).getPrivateKey(); jws.setKey(privateKey); ...
ビジネス要件に基づいて、JWKS
PAYLOADにカスタム パラメーターを追加できます。
ルート認証を有効にする
MSE コンソール にログオンします。上部のナビゲーション バーで、リージョンを選択します。
左側のナビゲーション ペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。
ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。
左側のナビゲーション ペインで、Routes をクリックし、[ルート] タブをクリックします。
目的のルートを見つけ、Actions 列の Policies をクリックします。
Policies ページで、Authentication タブをクリックします。次に、パラメーターを設定し、[保存] をクリックします。
パラメーター
説明
[認証タイプ]
コンシューマーがルートにアクセスする前にコンシューマーを認証するために使用される方法。
[有効]
認証を有効にするかどうかを指定します。スイッチをオンにすると、認証が有効になります。
ルートへのアクセスをコンシューマーに許可する
MSE コンソール にログオンします。上部のナビゲーション バーで、リージョンを選択します。
左側のナビゲーション ペインで、Cloud-Native Gateway > ゲートウェイリスト を選択します。
ゲートウェイリスト ページで、ゲートウェイの名前をクリックします。
左側のナビゲーション ペインで、Security Management > Consumer Authentication を選択します。
目的のコンシューマーを見つけ、AuthorizationActions 列の . をクリックします。
Consumer Authorization タブで、Associate Route をクリックし、コンシューマーにアクセス権限を付与するルートを選択して、OK をクリックします。