OpenID Connect (OIDC) プロトコルと企業の認証システムを統合することで、内部サービスの統合認証と権限付与管理を実現できます。これにより、繰り返し行われる調整作業が削減され、認証プロセスが簡素化されます。Cloud-native API Gateway は、統合認証、強化されたシステムセキュリティ、およびより柔軟なセキュリティポリシー設定エクスペリエンスを提供します。OIDC プロトコルとの統合に基づき、シングルサインオン (SSO) もサポートされています。SSO を使用して、複数のサービスにアクセスできます。
前提条件
標準の OIDC プロトコルをサポートする統合認証サービスが作成されていること。
背景情報
内部サービスへの外部アクセスを制御するために、Cloud-native API Gateway はリクエストを認証してサービスのセキュリティを確保します。通常、企業には自己管理の統合認証システムがあります。Cloud-native API Gateway インスタンスは、OIDC プロトコルに基づいて自己管理の認証システムに接続し、接続された内部サービスに統合認証を提供できます。これにより、各サービスを個別に認証システムに接続する必要がなくなります。
OIDC 認証
OIDC は認証プロトコルです。このプロトコルに基づき、サードパーティのアプリケーションは ID プロバイダーに接続してユーザー情報を取得し、その後 ID プロバイダーはアプリケーションに安全に応答を送信します。OIDC は OAuth2.0 プロトコルを拡張し、拡張された ID トークンフィールドを使用して基本的なユーザー ID 情報を提供します。ID トークンは JSON Web トークン (JWT) 形式でカプセル化され、自己完結型で改ざん防止のメカニズムを提供します。これにより、ID トークンをサードパーティのアプリケーションに安全に送信し、簡単に検証できます。
OIDC では、以下のロールが正式に定義されています。
クライアント:エンドユーザーに直接サービスを提供します。
認可サーバー:OpenID プロバイダーであり、通常は OpenID 認可サーバーです。認可サーバーは、認証に使用される ID トークンをサードパーティに発行します。
ビジネスサーバー:ビジネスサービスを提供します。
エンドユーザー:リソース所有者です。
プロセス:
クライアントは認可サーバーに認証リクエストを送信します。
エンドユーザーはユーザー名とパスワードを使用して認可ページにログインし、認証リクエストを確認します。
認可サーバーは認証リクエストを検証し、クライアントに認証コードを送信します。
クライアントは認証コードを含むコールバックリクエストをビジネスサーバーに送信します。
ビジネスサーバーは、認証コード、クライアント ID、およびクライアントシークレットを含むリクエストを認可サーバーに送信します。
認可サーバーはリクエストを検証し、ID トークンを返します。
認証が成功すると、ビジネスサーバーは ID トークンをクライアントに送信します。
クライアントは ID トークンを含むビジネスリクエストを構築し、ビジネスサーバーに送信します。
ビジネスサーバーは ID トークンを検証し、クライアントにビジネスレスポンスを返します。
Cloud-native API Gateway での OIDC 認証
前述の OIDC 認証プロセスでは、ユーザーサーバーや注文サーバーなどの複数のビジネスサーバーが存在する場合、各ビジネスサーバーで個別に認証を実装する必要があります。たとえば、リクエストを個別に検証し、各ビジネスサーバーを認可サーバーに接続する必要があります。Cloud-native API Gateway の OIDC 認証機能を使用すると、統合認証を実装できます。
プロセス:
クライアントはゲートウェイに認証リクエストを送信します。
ゲートウェイはリクエストを認可サーバーに転送します。
認可サーバーは、認証リクエスト内のユーザー名やパスワードなどの認証情報を読み取り、リクエストを検証します。リクエストが検証されると、認可サーバーはゲートウェイに認証コードを返します。
ゲートウェイは認証コードを含むレスポンスをクライアントに送信します。
クライアントは認証コードを含むコールバックリクエストをゲートウェイに送信します。
ゲートウェイは、認証コード、クライアント ID、およびクライアントシークレットを含むリクエストを認可サーバーに送信します。
認可サーバーはリクエストを検証し、ID トークンを返します。
認証が成功すると、ゲートウェイは ID トークンをクライアントに送信します。
クライアントは ID トークンを含むビジネスリクエストを構築し、ゲートウェイに送信します。
ゲートウェイはビジネスリクエストを検証し、リクエストをビジネスサーバーにパススルーします。
ビジネスサーバーはビジネスリクエストを処理し、ビジネスレスポンスをゲートウェイに送信します。
ゲートウェイはビジネスレスポンスをクライアントに転送します。
認証プロセス全体を通じて、ゲートウェイは受信したすべてのリクエストが有効であるかを確認します。リクエストが無効な場合、ゲートウェイはユーザーログインページにリダイレクトし、ユーザーログインのために認可サーバーにリクエストを送信します。これにより、認可サーバーはビジネスサーバーに対して透過的になります。
認証ルールの作成
API Gateway コンソールにログインします。
左側のナビゲーションウィンドウで、 をクリックします。トップナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、管理したいゲートウェイインスタンスの名前をクリックします。
左側のナビゲーションツリーで、 を選択します。
表示されたページの左上隅にある [認証の作成] をクリックします。[認証の作成] パネルで、パラメーターを設定し、[OK] をクリックします。
次の表にパラメーターを示します。
パラメーター
説明
[有効化]
認証を有効にするかどうかを指定します。
認証名
カスタム認証サービスの名前を入力します。
[認証メソッド]
[OIDC] を選択します。
ドメイン名
認証ルールを適用するドメイン名を指定します。
[発行者]
発行者の名前を入力します。
リダイレクト URL
権限付与が完了した後に使用されるリダイレクト URL を入力します。値は OIDC で設定されたリダイレクト URL と同じである必要があります。
重要パラメーター値は
http(s)://yourdomain/path形式です。この形式では、path は/oauth2/callbackに設定する必要があります。[クライアント ID]
サービス登録情報内のアプリケーションの ID を入力します。
クライアントシークレット
サービス登録情報内のアプリケーションシークレットを入力します。
クッキードメイン
Cookie のドメイン名を入力します。ユーザーが認証を通過した後、Cookie は指定されたドメイン名に送信され、ユーザーのログイン状態を維持します。たとえば、
Cookie ドメインを a.example.com に設定すると、Cookie はドメイン名 a.example.com に送信されます。Cookie ドメインを .example.com に設定すると、Cookie は example.com のすべてのサブドメイン名に送信されます。スコープ
OIDC スコープを入力します。複数の値はセミコロン (;) で区切ります。
[認可]
認可メソッドを選択します。有効な値は [ホワイトリスト] と [ブラックリスト] です。
ホワイトリスト:ホワイトリストで指定したホスト名とパスを持つリクエストのみが、認証なしでクラウドネイティブゲートウェイにアクセスできます。
ブラックリスト:ブラックリストで指定したホスト名とパスを持つリクエストのみが認証を必要とします。
[+ ルール条件] をクリックして、ドメイン名とパスを追加します。
[ドメイン名]:クラウドネイティブゲートウェイへのアクセスが必要なドメイン名。
[パス]:クラウドネイティブゲートウェイへのアクセスが必要なパス。
OIDC 認証ルールの詳細の表示
API Gateway コンソールにログインします。
左側のナビゲーションウィンドウで、 をクリックします。トップナビゲーションバーで、リージョンを選択します。
[インスタンス] ページで、管理したいゲートウェイインスタンスの名前をクリックします。
左側のナビゲーションツリーで、 を選択します。
[グローバル認証] ページで、認証ルールの名前をクリックするか、[操作] 列の [詳細] をクリックして、現在の [認証設定] と [認可情報] を表示します。

[認可情報] セクションで、[認可情報の追加] をクリックします。[認可情報の追加] ダイアログボックスで、[リクエストドメイン名] と [リクエストパス] を指定し、[一致モード] を選択して、[OK] をクリックします。
結果の確認
[グローバル認証] ページに戻り、認証情報を表示します。新しいゲートウェイ認証ルールが表示されていれば、ゲートウェイ認証ルールは正常に作成されています。
次のステップ
ゲートウェイインスタンスの認証ルールに対して、以下の操作を実行できます。
認証ルールを有効にする:[グローバル認証] ページで、管理したい認証ルールを見つけ、[操作] 列の [有効化] をクリックします。
認証ルールを無効にする:[グローバル認証] ページで、管理したい認証ルールを見つけ、[操作] 列の [無効化] をクリックします。
認証ルールを変更する:[グローバル認証] ページで、管理したい認証ルールを見つけ、[操作] 列の [編集] をクリックします。
認証ルールを削除する:[グローバル認証] ページで、管理したい認証ルールを見つけ、[操作] 列の [削除] をクリックします。
無効化された認証ルールのみ削除できます。
関連ドキュメント
他の認証メカニズムの詳細については、「概要」をご参照ください。