プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Access Management管理者ガイド
11g リリース2 (11.1.2.3) for All Platforms
E61950-08
目次へ移動
目次

前
次

58.1 JBossとAccess Managerの統合の概要

JBossアプリケーション・サーバーは、IBM WebSphereおよびSAP NetWeaverアプリケーション・サーバーのオープン・ソースの代替です。JBossアプリケーション・サーバーおよび関連サービスは、エンタープライズJavaアプリケーション、Webアプリケーション・サービスおよびポータルの開発とデプロイに使用されるJ2EEプラットフォームです。

J2EEは、標準化されたモジュラ・コンポーネントの使用を許可し、Javaプラットフォームによるプログラミングの多くの側面の処理を自動的に可能にします。JBossとの統合のために、Oracleは次のものを用意しています。

ノート:

Access Manager内でのJBossエージェントによる(またはAccess ManagerによるJBossエージェントへの)特別な処理はありません。

JBossとAccess Managerの統合により、次のことが可能になります。

クライアント・インタフェースはありません。詳細は、以下のトピックを参照してください。

58.1.1 JBossエージェントの構成および処理

JBossエージェントは、JBossサーバー上で動作する完全対応エージェントです。このJBossエージェントは、Webゲートを使用した(またはWebゲートを使用しない) Access Manager Webシングル・サインオン・フローをサポートします。

認証と認可は、Access Managerポリシー内で定義されたリソースURLに基づいています。JBossエージェントは、OAMサーバーへのすべての着信リクエストを捕捉し、リクエストされたリソースのアクセス権があるかどうかを確認します。リソースがOAMポリシーによって保護されている場合、JBossエージェントは、リソースにアクセスしようとしているユーザーの認証と認可を開始します。

非認証ユーザーが任意の保護リソースへのアクセスをリクエストした場合、JBossエージェントはユーザー名とパスワードのためにユーザーを資格証明コレクタにリダイレクトします。入力されるユーザー名とパスワードは、OAMサーバーによって認証されます。次に、JBossエージェントは、ユーザーのログイン・モジュールを使用して、JBossコンテナにユーザー・セッションを確立します。ログイン・モジュールは、LDAPディレクトリに問合せ、認証されたユーザー・プリンシパルをフェッチしてサブジェクトを設定します。

ノート:

JBossエージェントは、OAMサーバーとのアクセスおよび通信に関して、Pure Java ASDKクラスおよびAPIに依存します。JBossエージェントは、javax.servlet.Filterインタフェースを実装します。詳細は、Access Manager Java APIリファレンスを参照してください。

JBossエージェントは、OAMサーバーの通信詳細、証明書ストアなどを要求します。これらは、次のように構成できます。

  • すべての構成詳細を含むプロパティ・ファイル(このファイルへのパスはフィルタ・パラメータとして設定できます)

  • web.xmlのフィルタ構成内に追加されるプロパティ・ファイルの絶対パス

ノート:

Oracle Access Management管理者によって定義されるカスタム・ヘッダーは、これらのメソッドを使用してのみ定義できます。

アプリケーション・フィルタは、異なるロギング・レベル(FATAL、ERROR、WARNING、DEBUG、TRACE)でメッセージをログする必要があります。各レベルは、ログされる情報の重大度を降順で示しています。フィルタは、着信メッセージの詳細トレースを1セットとしてログできる必要があります。JBossエージェントおよびログイン・モジュールは、両方とも様々なログ・レベルのメッセージを備えています。同じログ・ファイル(server.log)のロギングの場合、次のようになります。

<category name="<<Component_code_package>>">
 <priority value="FINEST" class="org.jboss.logging.log4j.JDKLevel"/>
</category>

たとえば、ASDKの場合、前のタグのカテゴリ名は、次に示すようにoracle.security.am.asdkです。

<category name="<<oracle.security.am.asdk>>">
 <priority value="FINEST" class="org.jboss.logging.log4j.JDKLevel"/>
</category>

次の概要では、Access Manager JBossエージェントの処理機能の概要を説明します。

  1. OAMサーバーを問合せ、リクエストされたリソースが保護されているかどうかを確認します。

  2. OAMサーバーを呼び出し、認証スキームを取得します。

  3. 保護されているリソースの認証スキームを分析し、リクエストを資格証明コレクタにリダイレクトします。

  4. ユーザー資格証明を認証します。

  5. 認証成功: OAMサーバーから生成される認証トークンをCookieに設定します。

  6. 認証トークン: リクエストを処理する前にトークンの整合性を検証します。保護されているリソースにアクセスすることをユーザーが認可されていることを確認するようにOAMサーバーにリクエストし、それに応じてOAMサーバーからのレスポンスを処理します。

  7. ユーザー・リクエストとOAMサーバーのレスポンスに応じて、JBossエージェントは、ユーザー・リクエストのリダイレクト先を識別し、保護されているリソースへのアクセスを許可または拒否します。

JBossエージェントは、表58-1に記載したコンポーネントから構成されます。各コンポーネントは、Access ASDKを使用してOAMサーバーと通信します。

表58-1 JBossエージェントの構成

コンポーネント 説明

認証バルブ

すべての着信リクエストに対するJBoss認証フェーズの間に呼び出されます。リソースがアプリケーションのWeb記述子のセキュリティ制約によって保護されるとマークを付けられている場合、認証バルブはHTTPセッションにユーザー・プリンシパルがあるかどうかを確認します。

  • 有効なユーザーが存在する場合: 認証バルブによって、ユーザー・プリンシパルがアプリケーションのWeb記述子のセキュリティ制約を満たしているかどうか評価されます。制約が満たされている場合、リクエストは処理されます。満たされていない場合は、認可失敗メッセージが表示されます。

  • 有効なシングル・サインオンCookie (ObSSOCookie)がある場合(有効なユーザーなし): 認証バルブによって、Access Managerログイン・モジュールを使用してCookieの妥当性が確認されます(さらに、セッションでユーザー・プリンシパルが設定されます)。

  • 有効なシングル・サインオンCookie (ObSSOCookie)がない/有効なユーザーがない場合: リソースがAccess Managerポリシーを使用して保護されているとマークを付けられている場合、バルブによってOAMログイン・ページにリダイレクトされます。

認証フィルタ

JBoss認証フェーズに続く各着信リクエストに対して呼び出されます。各着信リクエストに対して、フィルタはトークンがあるかどうか確認します。

  • トークンがある場合: フィルタはASDKを使用してトークンを検証します。

  • 無効なトークン: フィルタはAccess Managerログイン・ページにリダイレクトします。

Access Managerログイン・モジュール

JBossエージェントによって内部的に使用され、SSOトークンに基づいてユーザーを認証します。

任意のクライアント(スタンドアロンまたはJBossコンテナ内にデプロイされる)は、ログイン・モジュールを使用して、ユーザー名とパスワードまたは有効なトークンに基づいて着信ユーザーを認証できます。

58.1.2 ログイン・モジュールの構成および処理

JAAS準拠のAccess Managerログイン・モジュールは、Access Manager javax.security.*パッケージによって提供される、JAAS APIを使用するプラガブルな認証モジュールです。JAAS準拠のログイン・モジュール・インタフェースを使用すると、クライアントは認証データをサーバーに渡すことができます。ログイン・モジュールは、JBossサーバーおよびアプリケーションによって構成され、モジュールとJBossアプリケーション・サーバーを統合します。

ログイン・モジュール実装クラスは次のとおりです。

   public class OAMLoginModule implements LoginModule

このクラスで必要な標準JAASパッケージはjavax.security.*です。ログイン・モジュール・クラスは、JARファイル($JBOSS_HOME/server/default/lib)に格納されます。

login-config.xmlファイルは、デフォルトのJBossログイン・モジュール構成ファイルです。このログイン・モジュールは、JAASセキュリティ・ドメイン名(OAMLoginModuleなど)を必要とします。情報は、login-config.xmlに名前付きセキュリティ・ドメインのリストとして格納され、それぞれがそのドメイン内での認証に使用する複数のJAASログイン・モジュールを指定します。たとえば、これを手動で追加してから、JBossサーバーを再起動します。

 <application-policy name="OAMLoginModule">
    <authentication>
      <login-module code="oracle.security.am.agent.common.jaas.login.OAMLoginModule"
        flag="required">
      <module-option name="loginType">tokenBased</module-option>
      <module-option name="configPath">D:/agentconfig</module-option>
      <module-option name="publicAuthnResourceName">/Authen/Basic</module-option>
      <module-option name="rolesParam">OAM_GROUPS</module-option>
      <module-option name="publicAuthzResourceName">/Authen/SSOToken</module-option>
      </login-module>
    </authentication>
</application-policy>

ノート:

アプリケーションがセキュリティを必要とするときには必ず、ドメイン名を指定して、アプリケーションのJBoss固有のデプロイメント記述子(一方または両方)で使用する必要があります。

  • jboss.xml: アプリケーション用のJBoss固有構成を定義します。

  • jboss-web.xml: Webアプリケーション用のJBossを定義します。このファイルは、セキュリティ・ドメインを宣言し、WEB-INFフォルダに配置する必要があります。

JAAS準拠のログイン・モジュールは、ユーザー名/パスワードまたはAccess Managerトークンのいずれかを使用します。これは、OAMサーバーで(Access Manager Java ASDK APIを使用して)資格証明またはトークンを認証および検証し、OAMサーバーから取得したユーザーおよびグループの情報をJAASサブジェクトに移入します。

ログイン・モジュールは、usernamePasswordモードまたはtokenBasedモードのいずれかで動作できます。次の項では、詳細を説明します。

58.1.3 usernamePasswordモードでのログイン・モジュール・プロセス

usernamePasswordモードでは、セキュリティ・アイデンティティと資格証明ペアを形成するユーザー名とパスワードまたはユーザーと証明書の組合せに基づいてユーザーを認証します。

ログイン・モジュールは直接LDAPに問い合せません。かわりに、ログイン・モジュールは、OAM Java ASDKを使用して、OAMサーバーでユーザー資格証明と通信してこれを認証します。ユーザーおよびグループの情報はレスポンスとして取得されます。次はプロセスの概要です。

  1. ログイン情報をフェッチします。

  2. JBossエージェントによって収集された資格証明に基づいて、Access Managerでユーザーを認証します。

  3. サーバー上のクライアントに対してコンテナ・セッションを作成します。

  4. ユーザーIDおよびロールを使用してJAASサブジェクトを設定します。

  5. ログアウト時、セッションでサブジェクトのプリンシパル設定をクリアし、サブジェクトのロールに関連付けられている権限の設定を削除します。

58.1.4 tokenBasedモードでのログイン・モジュール・プロセス

tokenBasedモードでは、SSOトークンを検証してサブジェクトを設定します。

サブジェクトを設定するためのプロセス・フローは次のとおりです。

  1. ログイン情報をフェッチします。

  2. OAMサーバーから生成されるSSO認証トークンをCookieで検証します。

  3. サーバー上のクライアントに対してコンテナ・セッションを作成します。

  4. 既存のSSOセッション・トークンを使用してフェッチしたユーザーIDおよびロールを使用してJAASサブジェクトを設定します。

  5. ログアウト時、セッションでサブジェクトのプリンシパル設定をクリアし、サブジェクトのロールに関連付けられている権限の設定を削除します。