アプリケーション・ゲートウェイの理解

アプリケーション・ゲートウェイは、コンピュート・インスタンス、クラウド・インフラストラクチャまたはオンプレミス・サーバーでホストされているアプリケーションを認証目的でIAMと統合できるソフトウェア・アプライアンスです。

アプリケーション・ゲートウェイは、権限のないネットワーク・アクセスを制限することで、Webアプリケーションを保護するリバース・プロキシとして機能します。アプリケーション・ゲートウェイは、これらのアプリケーションへのHTTPリクエストをインターセプトし、これらのアプリケーションへのリクエストの転送前にユーザーがIAMで認証されるようにします。アプリケーション・ゲートウェイは、認証されたユーザーのアイデンティティをアプリケーションに伝播します。

ユーザーがIAMで認証されていない場合、アプリケーション・ゲートウェイは、資格証明の検証のためにユーザーをサインイン・ページにリダイレクトします。

ノート

Cloud Gateを使用している場合は、表示名がHTTPヘッダーとして送信されるため、ユーザーの名前に「ユーザーの作成」に示されている文字のみが含まれていることが重要です。印刷できないASCII文字が使用されている場合、Cloud Gateはリクエストが無効であると判断し、400エラーを返します。

アプリケーション・ゲートウェイの使用

アプリケーション・ゲートウェイを使用して、次を行います:

  • オンプレミスまたはクラウド・インフラストラクチャでホストされているエンタープライズ・アプリケーションを認証目的でIAMと統合します。

    たとえば、オンプレミスまたはクラウド・インフラストラクチャでホストされているWebアプリケーションがある場合、このアプリケーションを、シングル・サインオンのために他のクラウドベースのアプリケーションと統合できます。アプリケーション・ゲートウェイを使用して、WebアプリケーションをIAMと統合し、他のクラウドベースのアプリケーションで認証メカニズムとしてIAMが使用されていることを確認します。これらのアプリケーションはいずれも、IAMによって提供されるシングル・サインオンを使用します。

  • イントラネットWebアプリケーションをインターネット・アクセスに公開します。

    Webアプリケーションがイントラネット上でホストおよびアクセスされており、インターネットを介してこのアプリケーションへのアクセスを公開する場合は、アプリケーション・ゲートウェイを使用してインターネット・リクエストをプロキシし、イントラネットWebアプリケーションにアクセスする前にユーザーにIAMでの認証を要求します。この場合、アプリケーションがイントラネット・ゾーンに残っている間に、アプリケーション・ゲートウェイをネットワークDMZにデプロイします。

  • ネイティブ認証メカニズムがなく、SAMLフェデレーション、OAuthまたはOpenID Connectの統合方法をサポートしていないアプリケーションと統合します。

    アプリケーションがIAMがサポートする認証の標準(SAML、OAuthおよびOpenID Connect)をサポートしておらず、アプリケーションでIAMのSDKを使用できない場合は、アプリケーション・ゲートウェイを使用してWebアプリケーションをIAMと統合できます。

  • HTTPヘッダーベースの認証をサポートしているアプリケーションと統合します。

    HTTPヘッダーベースの認証をサポートしているWebアプリケーションの場合、アプリケーション・ゲートウェイの統合方法では、Webアプリケーションのソース・コードを変更する必要はありません。IAMでアプリケーションの認証ポリシーを構成して、アプリケーション・ゲートウェイがリクエストをアプリケーションに転送する前に、リクエストにヘッダー変数を追加する必要があります。これにより、アプリケーションは、IAMで認証されたユーザーを識別できます。

アプリケーション・ゲートウェイの動作

アプリケーション・ゲートウェイは、インフラストラクチャがクラウド、オンプレミスまたはハイブリッド環境のどこに存在するかに関係なく、顧客のインフラストラクチャ内にデプロイされます。これは、リバース・プロキシとして機能し、クライアントからアプリケーションへのすべてのリクエストをインターセプトします。次に、アプリケーション・ゲートウェイは、ユーザーがすでにIAMにサインインしているかどうかを確認します。ユーザーがサインインしている場合、保護されているアプリケーションがヘッダー変数にアクセスできるように、アプリケーション・ゲートウェイはリクエストにヘッダー変数を追加します。アプリケーションは、アプリケーション・ゲートウェイがアイデンティティ・ドメイン値でサインイン・ユーザーを識別したことを信頼し、ユーザー・セッションを作成します。

リクエストがアプリケーションに送信される前にヘッダー変数値が変更されないように、アプリケーション・ゲートウェイとアプリケーション間の通信がセキュアであることを確認します。

ユーザーがアプリケーション・リソースにアクセスしようが、アイデンティティ・ドメインにサインインしていない場合に、アプリケーション、アプリケーション・ゲートウェイ、アイデンティティ・ドメインおよびユーザー・ブラウザが対話する方法を示します

次のステップでは、Webブラウザ、アプリケーション・ゲートウェイおよびエンタープライズ・アプリケーション間のフォームベースの認証フローについて説明します:

ステップ 説明
コールアウト1 Webブラウザで、ユーザーは、アプリケーション・ゲートウェイによって公開されているURLを介してアプリケーションへのアクセスをリクエストします。
コールアウト2

アプリケーション・ゲートウェイは、リクエストをインターセプトし、ユーザーにIAMとのセッションがないことを確認してから、ユーザーのブラウザをサインイン・ページにリダイレクトします。

ステップ2で、ユーザーにIAMとのセッションがある場合、ユーザーはすでにサインインしていることを意味します。その場合、アクセス・トークンがアプリケーション・ゲートウェイに送信され、残りのステップはスキップされます。

コールアウト3 IAMは、サインイン・ページまたはドメインで構成されている任意のサインイン・メカニズムを提供します。
コールアウト4 ユーザーは、IAMにサインインします。
コールアウト5 認証に成功すると、IAMは、ユーザーのセッションを作成し、アプリケーション・ゲートウェイにアクセス・トークンを発行します。
コールアウト6 アプリケーション・ゲートウェイは、トークンを使用してユーザーを識別します。次に、リクエストにヘッダー変数を追加して、リクエストをアプリケーションに転送します。
コールアウト7 アプリケーションは、ヘッダー情報を受信し、ユーザーのアイデンティティを検証して、ユーザー・セッションを開始します。

アプリケーション・ゲートウェイは、アプリケーションの保護されたリソースに対する後続のリクエストをすべてインターセプトします。アプリケーション・ゲートウェイは、ユーザーを識別し、リクエストにヘッダー変数を追加して、リクエストをアプリケーションに転送します。

サインアウトするには、ユーザーはアプリケーションのログアウトURLをコールします。アプリケーション・ゲートウェイは、ログアウトURLを識別し、ユーザーをアイデンティティ・ドメインのOAuthログアウト・エンドポイント(/oauth2/v1/userlogout)にリダイレクトします。IAMでユーザーがサインアウトされると、IAMは、アプリケーションのユーザー・セッションを削除できるアプリケーションのURLにユーザーのブラウザをリダイレクトできます。

アプリケーション・ゲートウェイ・ログアウトの仕組み

ユーザーは、2つの異なるメカニズム(アプリケーション・ゲートウェイ・ログアウトURL、またはログアウト認証メソッドで保護されたリソースのコール)を使用して、アプリケーション・ゲートウェイによって保護されているアプリケーションからログアウトできます。

アプリケーション・ゲートウェイ・ログアウトURLの使用

アプリケーション・ゲートウェイには、IAMによって提供されるシングル・サインオンからユーザーをログアウトするために使用できる中央ログアウトURLがあります。このエンドポイントへのコールによって、ログアウト・プロセスがトリガーされます。ユーザーがログアウトした後、保護されたアプリケーション・リソースへの後続のアクセスでは、ユーザーはIAMに再度サインインする必要があります。

このエンドポイントでは、URLに2つのパラメータが追加されています:
  • postlogouturl: ログアウト後のランディング・ページのURL。この値は、URLエンコードする必要があります。パラメータが指定されていない場合、アプリケーション・ゲートウェイは、ユーザー・ブラウザをコンソールの「セッション設定」で指定されたログアウトURLにリダイレクトします。
  • state: これは、ログアウト・プロセスの終了後にエンタープライズ・アプリケーションで使用されるオプションのパラメータです。

構文

http(s)://<appgateway_host>:<appgateway_port>/cloudgate/logout.html?postlogouturl=<url_encoded>&state=<state_value>

パラメータのあるログアウト・エンドポイント

アプリケーション・ゲートウェイのベースURLがhttps://myappgateway.example.com:4443の場合は、次のURLを使用して、シングル・サインオンからユーザーをログアウトします: https://myappgateway.example.com:4443/cloudgate/logout.html?postlogouturl=http%3A%2F%2Fwww.oracle.com&state=123

ログアウト認証メソッドで保護されたリソースの使用

エンタープライズ・アプリケーションでリソースを作成し、「フォーム+ログアウト」認証メソッドを使用してこのリソースの認証ポリシーを構成できます。ユーザーはこのリソースにアクセスすると、アプリケーション・ゲートウェイはログアウト・プロセスを起動し、IAMが提供するシングル・サインオンからユーザーをログアウトします。

構文

http(s)://<appgateway_host>:<appgateway_port>/<logout_resource>

ログアウト認証メソッドで保護されたリソース

エンタープライズ・アプリケーションで/myapp/logoutリソースを作成し、「認証ポリシー」セクションでこのリソースの認証メソッドとしてForms+Logoutを割り当てた場合、ユーザーがURL https://myappgateway.example.com:4443/myapp/logoutにアクセスすると、IAMによって提供されるシングル・サインオンからログアウトされます。