Oracle Access Managerおよびシングル・サインオン

Oracle Access ManagerはJavaプラットフォームのEnterprise Edition (Java EE)に基づいた、エンタープライズ・レベルのセキュリティ・アプリケーションで、機密情報へのアクセスを制限したり、認証や認可のサービスを一元化します。Oracle Access Managerは、Oracle Fusion Middlewareのコンポーネントの1つで、認証と認可のためのシングル・サインオン・ソリューションです。

認証サーバーを使用すると、アプリケーションで共有認証トークンまたは認証局を使用してユーザーを認証できるようになります。あるアプリケーションで認証されたユーザーは、同一の認証ドメイン内にある他のすべてのアプリケーションでも自動的に認証されます。

Formsアプリケーションでは、Oracle Internet DirectoryまたはOracle Platforms Security Services (OPSS)からデータベース接続情報を取得するためにのみ、シングル・サインオン・ソリューションが使用されます。Oracle Forms 12cに導入されているSSOログアウト機能の1つを使用してFormsアプリケーションがコーディングされていないかぎり、アプリケーションを終了してもシングル・サインオン・ログアウトは実行されません。同様に、FormsのSSOログアウト機能の1つを使用してアプリケーションがコーディングされていないかぎり、シングル・サインオン・セッションからログアウトしてもアクティブなFormsセッションは終了しません。データベース・セッションは、サーバーのFormsランタイム(frmweb.exeなど)が(通常は明示的にフォームを終了することによって)終了するまで存続します。

Oracle Forms Servicesでは、サーバー・インスタンスで実行されるすべてのFormsアプリケーションに対するシングル・サインオンが、最初からサポートされています。Formsアプリケーションでさらにコーディングを行う必要はありません。

ノート:

Oracle Forms Servicesアプリケーションは、OID (またはOPSS)と認証サーバーの組合せを使用して、シングル・サインオン環境で実行されます。サポートされているバージョンは、製品動作保証ガイドを参照してください。

関連項目:

カスタムFormsアプリケーションをシングル・サインオン・モードで実行している場合、Forms JavaEEアプリケーションを再デプロイして、そのコンテキスト・ルート・サーブレット別名をオーバーライドすると、次のエラーが発生する可能性があります。

FRM-60209 error obtaining credentials from Oracle Platform Security Services: missing resource FRM-60209 error obtaining credentials from Oracle Platform Security Services in oracle.forms.servlet.LBServletBundle

このエラーを解決するには、次のステップに従ってアプリケーションをSSOモードで実行します。
  1. カスタムForms JavaEEアプリケーションをデプロイします。

    次の例では、salesおよびsalesservletをコンテキスト・ルートおよびアプリケーションとしてそれぞれ使用します。

    context-root forms-> sales servlet-alias frmservlet-> salesservlet

  2. forms.confファイルにマッピングを作成します。

    これをsalesアプリケーションで行う方法の例を、次に示します。

    <Location /sales/> SetHandler weblogic-handler WebLogicCluster example.com:9010 DynamicServerList OFF </Location>

  3. $ORACLE_HOME/forms/provisionディレクトリに格納されたForms OAM登録メタデータ・ファイルFormsOAMRegRequest2Ports.xmlおよびFormsOAMRegRequest.xmlに、次を追加します。
    エントリ 変更前 変更後
    protectedResourcesList <protectedResourcesList> <resource>/forms/frmservlet?*oamMode=true*</resource> <resource>/reports/rwservlet/*</resource> </protectedResourcesList> <protectedResourcesList> <resource>/forms/frmservlet?*oamMode=true*</resource> <resource>/sales/salesservlet?*oamMode=true*</resource> <resource>/reports/rwservlet/*</resource> </protectedResourcesList>
    excludedResourcesList <excludedResourcesList> <resource>/forms/frmservlet?*ifcmd=startsession*</resource> <resource>/forms/lservlet*</resource> <resource>/forms/lservlet/**</resource> <resource>/forms/java/**</resource> <resource>/forms/html/**</resource> </excludedResourcesList> <excludedResourcesList> <resource>/forms/frmservlet?*ifcmd=startsession*</resource> <resource>/forms/lservlet*</resource> <resource>/forms/lservlet/**</resource> <resource>/forms/java/**</resource> <resource>/forms/html/**</resource> <resource>/sales/salesservlet?*ifcmd=startsession*</resource> <resource>/sales/lservlet*</resource> <resource>/sales/lservlet/**</resource> <resource>/sales/java/**</resource> <resource>/sales/html/**</resource> </excludedResourcesList>
  4. frmconfighelperスクリプトを使用して、パートナ・アプリケーション登録を実行します。
  5. 次のOPSS付与を付与します。WLSTに接続して次のコマンドを実行します。

    grantPermission(codeBaseURL="file:${domain.home}/servers/${weblogic.Name}/tmp/ _WL_user/salesapp_14.1.2/-", permClass="oracle.security.jps.service.keystore.KeyStoreAccessPermission", permTarget="stripeName=salesapp,keystore=formsks,alias=*,Action=*")

  6. WebLogicサーバーを再起動します。

Oracle Formsで使用されるシングル・サインオン・コンポーネント

認証サーバーを使用したシングル・サインオン・モードでFormsアプリケーションを実行するときに関連する、Oracle Fusion Middlewareの様々なシングル・サインオン・コンポーネントがあります。

次の図に、Forms Servicesのシングル・サインオン・デプロイメント設定に関連する、様々なコンポーネントのおおまかな概要を示します。

図-26 OPSSをFormsアイデンティティ・ストアとしたForms Servicesのシングル・サインオン・デプロイメント設定に関連するコンポーネント

図-26の説明が続きます
「図-26 OPSSをFormsアイデンティティ・ストアとしたForms Servicesのシングル・サインオン・デプロイメント設定に関連するコンポーネント」の説明

図-27 (Oracle Internet Directory) OIDアイデンティティをFormsアイデンティティ・ストアとしたForms Servicesのシングル・サインオン・デプロイメント設定に関連するコンポーネント

図-27の説明が続きます
「図-27 (Oracle Internet Directory) OIDアイデンティティをFormsアイデンティティ・ストアとしたForms Servicesのシングル・サインオン・デプロイメント設定に関連するコンポーネント」の説明

前述の図で示されたコンポーネントの説明を次に示します。

  • 認証サーバー

    • Oracle Access Manager (OAMサーバー) - Webシングル・サインオン、認証、認可を含む全セキュリティ機能を提供するOracle FMW認証サーバー。Forms Servicesを実行するときに、アイデンティティ・ストアとしてOracle Internet Directoryを使用できます。Oracle Access Managerは、Oracle HTTP Serverに対して構成されるアクセス・クライアントとしてwebgateを使用できます。

  • アクセス・クライアント

    • webgate - WebGateはシングル・サインオン・サポートを提供します。これは受信HTTPリクエストをインターセプトし、認証のためにそれらをアクセス・サーバーに転送します。Oracle Forms Servicesは、OAMサーバーに対するアクセス・クライアントとしてwebgateを使用できます。

  • Formsアイデンティティ・ストア

    • これは、Formsサーバー・データベース接続情報が含まれるFormsリソース・アクセス記述子の記憶域です。Oracle Platform Security Services (OPSS)またはOracle Internet Directory (OID)をFormsアイデンティティ・ストアとして使用できます。Oracle Platform Security Services (OPSS)がデフォルトのFormsアイデンティティ・ストアとして設定されますが、Forms管理者はOracle Enterprise Managerを使用して、Formsアイデンティティ・ストアをOracle Internet Directory (OID)に変更したり、Oracle Platform Security Servicesに戻すことができます。

  • OAMサーバー・アイデンティティ・ストア - Oracle Internet Directory (OID)は、Oracle Access Manager (OAM)認証サーバーおよびFormsアプリケーションによってアイデンティティ・ストアとして使用されるLDAPサーバーですOracle Forms環境では、Formsのアイデンティティ・ストアがOIDではなくOPSSである場合、OAMで使用することが保証されている任意のLDAPサーバーを使用できます。

    ノート:

    Oracle Internet Directory (OID)がFormsアイデンティティ・ストアとして使用される場合、同じOracle Internet Directory (OID)インスタンスをOracle Access Managerのプライマリ・アイデンティティ・ストアとして設定する必要があります。

  • Forms Servlet - このOracle Forms Servicesコンポーネントは、Formsアプリケーションを起動する最初のユーザー・リクエストを受け取ります。Formsサーブレットは、アプリケーションに認証が必要かどうかを検出してリクエストを認証サーバーに転送し、Oracle Internet Directoryにアクセスしてデータベース接続情報を取得します。

認証フロー

次の図に、認証サーバーで保護されたアプリケーションURLをユーザーが最初にリクエストしたときの、Oracle Formsでの認証サーバー・サポートの認証フローを示します。

図-28 最初のクライアント・リクエストの認証フロー

図-28の説明が続きます
「図-28 最初のクライアント・リクエストの認証フロー」の説明

図-29 最初のクライアント・リクエストの認証フロー

図-29の説明が続きます
「図-29 最初のクライアント・リクエストの認証フロー」の説明

次のステップでは、前述の図で示す認証フローについて説明します:

  1. ユーザーは、http(s)://<hostname>:<port>/forms/frmservlet?config= <application>&...のようなForms URLをリクエストします。

    ノート:

    シングル・サインオンを使用するFormsアプリケーションでは、HTTPのポート番号をForms URLで指定します。Forms URLはhttp://<host name>:<http port>/forms/frmservlet?config=ssoappのように指定し、<ssoapp>はシングル・サインオン(ssoMode)が有効化されたフォーム構成ファイルのセクションの名前です。
  2. Formsサーブレットは、認証サーバー・ログイン・ページにユーザーをリダイレクトします。
  3. ユーザーが、ログイン・フォームでユーザー名とパスワードを指定します。
  4. Oracle Internet Directory (LDAPサーバー)で、パスワードが検証されます。
  5. ユーザーは、sso_userid情報とともにそのURLにリダイレクトされます。
  6. FormsサーブレットがFormsアイデンティティ・ストアからデータベース資格証明を取得します。
  7. Formsサーブレットは、フォーム実行セッションにsso_useridパラメータを設定し、アプレットのFormsリスナー・サーブレットへの接続を許可します。
  8. FormsサーブレットがFormsサーバーを起動します。

図-30に、別のパートナ・アプリケーションで認証されたユーザーが、認証サーバーで保護されたアプリケーションをリクエストした場合におけるOracle Forms Servicesのシングル・サインオン・サポートの認証フローを示します。

図-30 後続のクライアント・リクエストの認証フロー

図-30の説明が続きます
「図-30 後続のクライアント・リクエストの認証フロー」の説明

次のステップでは、前述の図で示す認証フローについて説明します:

  1. ユーザーは、Forms URLをリクエストします。
  2. Formsサーブレットは、認証サーバーおよびそのログイン・ページにユーザーをリダイレクトします。
  3. ユーザーのリクエストが、sso_userid情報とともにURLにリダイレクトされます。
  4. FormsサーブレットがFormsアイデンティティ・ストアからデータベース資格証明を取得します。
  5. Formsサーブレットは、ランフォーム・セッションにsso_useridパラメータを設定し、アプレットがFormsリスナー・サーブレットに接続します。
  6. FormsサーブレットがFormsサーバーを起動します。