Oracle Formsスタンドアロン・ランチャ

Formsスタンドアロン・ランチャ(FSAL)を使用すると、エンド・ユーザーはブラウザを使用せずにFormsアプリケーションを新しい方法で実行できます。

Formsスタンドアロン・ランチャについて

Formsスタンドアロン・ランチャ(FSAL)は、ユーザーがアプリケーションにアクセスして操作できるように、ブラウザ不要のクライアント/サーバーのようなエクスペリエンスを提供します。ブラウザでHTMLページに埋め込まれたフォームを実行する場合とは異なり、アプリケーションは独自の親ウィンドウで実行されます。

そのため、「戻る」ボタンまたは「進む」ボタンを押したり、ブックマークをクリックするなどして、実行中のフォームから誤って移動するリスクはありません。FSALでは、アプリケーションはWebLogic Serverなどの集中管理されたアプリケーション・サーバーでホストされます。つまり、Formsアプリケーション・モジュールは、リモートの中間層サーバーに安全に格納されます。

ユーザーは、FMX、MMX、PLXなどのリモート・サーバー上にあるFormsモジュールに直接アクセスすることはできませんが、ブラウザでの実行時に以前使用されていた一般的なURLを使用して、これらのアプリケーションを実行できます。

FSALを使用すると、イベント駆動型のシングル・サインオフを除いて、ブラウザでフォームを実行するときに検出されるすべての機能と同じ機能がサポートされます。シングル・サインオンはサポートされています。FSALを使用して起動されたアプリケーションに対するJavaScript統合サポートは、提供されているアドオン(WJSI)およびサードパーティ・ライブラリ(Eclipse/Jetty)を使用して追加/有効化できます。FSALは、Webページのカスタム・プロトコル・ハンドラを使用して起動できます。

FSALは、プラグイン、Web StartなどのJavaデプロイメント・テクノロジに依存せず、ブラウザに依存しません。エンドユーザーのマシンにJavaランタイムが必要です。

要件

FSALでは、ユーザーのマシンにOracle Javaがインストールされている必要があります。Javaアプリケーションの実行をサポートし、使用されているOracle Formsのバージョンに対して動作保証されているすべてのOracle Javaディストリビューションを使用できます。

どのディストリビューションまたはバージョン(あるいはその両方)を選択するかは、アプリケーションのニーズによって異なる場合があります。選択したOracle Javaインストールの内容を慎重に確認し、アプリケーションを本番に移行する前に十分にテストすることをお薦めします。

次のディストリビューションは、ほとんどのエンド・ユーザー・プラットフォームで使用可能で、FSALの実行に使用できます。

  • Java 8ファミリ: JRE、JDKまたはServer JREの32ビットおよび64ビット・ディストリビューション。

    ノート:

    Server JREディストリビューションは、手動で抽出する必要があるzipファイルとして提供されます。このディストリビューションはソフトウェアのインストールを実行せず、JREおよびJDKディストリビューションよりもはるかに軽量であるため、このオプションはカスタマイズされた起動スクリプトとともに使用される場合など、FSALに最適です。
  • Java 17以降。これらは、64ビットJDKディストリビューションとしてのみ使用可能ですが、FSALで使用できます。動作保証されたJavaバージョンを使用していることを確認するには、このFormsバージョンのOracle Fusion Middlewareのサポートされるシステム構成を参照してください。

使用可能なJavaディストリビューション間の主な相違点は次のとおりです。

  • Java Runtime Environment - JRE: Java 8のみ。JREでは、通常のエンド・ユーザーに必要なほとんどのコンポーネントがインストールされます。これには、ローカルJavaアプリケーションの実行に必要なすべてに加えて、Javaデプロイメント・コンポーネント(Java Web StartおよびJava Plug-in)も含まれます。Javaデプロイメント・コンポーネントは、Java 8より新しいメジャー・リリースでは使用できません。
  • Java Development Kit - JDK: JDKはすべてのバージョンで使用可能で、通常、Java開発者向けであり、一般的なユーザーが必要とする以上のものが含まれています。JDKには、完全なJRE、Javaデプロイメント・コンポーネント(Java 8のみ)、およびJavaアプリケーションを開発、デバッグ、監視および保守するためのツールが含まれています。
  • Server JRE: Java 8のみ。Server JREは、主にJavaアプリケーションをサーバーにデプロイするためのものです。これには、JVMモニタリング用のツールと、サーバー・アプリケーションに一般的に必要とされるツールが含まれています。Java Plug-in、Java Web Start、自動更新、インストーラなど、ブラウザ統合に必要なJavaデプロイメント・コンポーネントは含まれていません。
  • カスタムJRE: Oracle Javaバージョン17以降。ユーザーは、このバージョンを使用してカスタムJREディストリビューションを作成できます。

    ノート:

    このガイドでは、カスタムJREディストリビューションの作成方法については説明していません。これらのユーティリティの使用方法の詳細は、Javaのドキュメントを参照してください。

    このバージョンには、次のユーティリティが含まれています。

    • jdepsユーティリティ: どのJavaモジュールが必要かを決定するために使用されます
    • jlinkユーティリティ: カスタムJREの作成に使用されます
    • jpackageユーティリティ: 必要に応じて、カスタムJREをインストール可能なディストリビューションにパッケージ化するために使用されます

Formsスタンドアロン・ランチャのインストール

FSAL java JARファイル(frmsal.jar)をダウンロードし、ローカル・ドライブに保存します。

frmsal.jarファイルは、インストールで使用可能な使用方法/構文のWebページからダウンロードできます。このユーティリティは、ユーザーがそのディレクトリおよびユーティリティへのアクセス権を持っている場合は、どこにでも格納できます。ユーザーのホーム・ディレクトリに保存することをお薦めしますが、必須ではありません。

このファイルはバージョン固有です。あるインストールから別のインストールに対してfrmsal.jarを使用することはできません。たとえば、Microsoft Windowsサーバーからfrmsal.jarをダウンロードして、UNIX/Linuxサーバーに対してアプリケーションを実行したり、その逆を行うことはできません。ランチャは、クライアント・プラットフォーム固有のものではありません。Forms動作保証済のOracle Javaバージョンの実行をサポートするすべてのプラットフォームで使用できます。

警告:

frmsal.jarファイルの名前を変更しないでください。FSALの一部の機能では、デフォルトのファイル名が必要です。ファイル名を変更すると、一部の機能が正しく動作しない可能性があります。

frmsal.jarファイルをダウンロードするには:

  1. 次のようなURLを使用して、使用方法/構文のWebページにアクセスします。
    https://<your server>:<your port>/forms/html/fsal.htm
  2. 使用可能なダウンロード・リンクをクリックし、ファイルをローカル・ドライブに保存します。

FSALを使用したアプリケーションの実行

FSALを使用してアプリケーションを実行するには、コマンド・プロンプトを開き、必要なコマンドライン引数、FormsアプリケーションURLおよびその他の詳細を指定する必要があります。

より高度なニーズがある場合(アプリケーションがプロキシ・サーバーを介して通信する必要がある場合や、カスタム・プロトコル・ハンドラを使用する場合など)は、この項の他のトピックを参照してください。

Formsスタンドアロン・ランチャとそれが実行するアプリケーションは、Webブラウザまたはそのアプリケーションとは関係ありませんが、FSALアプリケーションからWebページと通信することは可能です。詳細は、「Oracle FormsとJavaScriptの統合」を参照してください。

FSALを使用したアプリケーションの実行

コマンド・プロンプトを使用してFSALでアプリケーションを起動します。

リクエストに対応するには、Formsアプリケーションの完全なURLを知る必要があります。現在、URLリダイレクトまたはリライトの使用はサポートされていませんが、サーバーの構成によっては技術的に可能です。FSALは、Forms環境を指す完全修飾URLを受け取る必要があります。

デスクトップ・ショートカット、スクリプトまたはバッチ・ファイルをハイパーリンクのかわりに使用すると、アプリケーションの起動が簡単になり、エラーが発生しにくくなります。

ノート:

このユーティリティは、無人の負荷テストなどの非対話的な目的では推奨されません。ユーザーのマシン上で同時または連続した多数のセッションを起動すると、予期しない望ましくない動作が発生する可能性があります。

FSALを使用してアプリケーションを起動するには:

  1. Microsoft WindowsでDOSなどのシェルを開き、次のコマンドを入力して、目的の動作保証されたOracle Javaバージョンが見つかったことを確認します。
    java –version

    結果に、目的のOracle Javaバージョンが示されます。示されない場合は、システムのPATHが正しく設定されていない可能性があります。必要な修正を行ってから続行します。

  2. frmsal.jarが格納されているディレクトリに移動し、必要なサーバー名およびポートを使用して次のコマンドを入力します。

    ノート:

    サーバーでSSLが有効化されておらず、かわりにHTTPを使用している場合は、プロトコル(http://)をURLエントリから省略できます(想定)。
    java -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp" 

    この例では、standaloneappというタイトルの構成セクションに関連付けられたアプリケーションが実行されます。Forms Web構成で提供されているstandaloneappの例にあるエントリが含まれているかぎり、すべての構成セクションを使用できます。

  3. 必要に応じて、デスクトップ・ショートカット、バッチ・スクリプト・ファイルまたはカスタム実行可能ファイルを作成して、アプリケーションの起動をより簡単かつシームレスにします。

Oracle Formsで生成された出力は、通常はJavaコンソールに表示され、アプリケーションの起動に使用されるシェルに表示されます。javaではなくjavawまたは類似のコマンドを使用する場合、コンソールが表示されないことがあります。javaコマンドを使用する場合、アプリケーションを起動したシェルを閉じると、アプリケーションが終了します。

この動作は、様々なシェル・コマンドや関連するスイッチを使用してアプリケーションのニーズに対応できるように変更できます。ユーザーのプラットフォームでのコマンド・シェルの使用の詳細は、オペレーティング・システムのドキュメントを参照してください。

コマンドライン引数の完全なリストは、インストールで提供されているFSAL使用方法のページを参照してください。このページにアクセスするには、ブラウザでこのURLを入力します。

http://<server>:<port>/forms/html/fsal.htm

Java 17以上でのJavaFXの有効化

Oracle Java 17以降の長期サポート(LTS)リリースを使用してFSALを実行している場合、アプリケーションでFormsオーディオ機能を使用するには、JavaFXを有効にする必要があります。オーディオ機能が適切に機能するには、JavaFXが必要です。

アプリケーションでFormsオーディオ機能を使用しない場合は、これらのステップをスキップできます。

JavaFXを有効にするには、JavaFX SDKが必要です。このSDKは、GluonのJavaFXページ(https://gluonhq.com/products/javafx)からダウンロードできます。FSALの実行に使用されるJavaバージョンに最も近いJavaFX SDKのバージョンをダウンロードしてください。

ノート:

JavaFXは、Gluonがホストするオープン・ソース・プロジェクトになりました。8より新しいJavaFXバージョンは、Gluonまたはオープン・ソース・コミュニティ(あるいはその両方)によってサポートおよびライセンスされています。ダウンロードおよび使用する前に、使用条件およびサポート・オプションを確認してください。https://openjfx.ioおよびhttps://github.com/openjdk/jfxを参照してください。

GluonはOracleと提携しておらず、JavaFXはOracleではサポートされていません。

ユーザーのマシンでJavaFXを有効にするには:

  1. JavaFX SDKを、ユーザーがランタイム(readexecute)権限を持つディレクトリに抽出します。
  2. 一般的なFSAL起動コマンドをJFXを含むように変更します。

    次に例を示します。

    java --module-path C:/javafx-sdk-17.0.4/lib --add-modules=javafx.media,javafx.swing -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp"

プロキシ・サーバーを介したアプリケーションの実行

アプリケーションがプロキシ・サーバーを介して通信する必要がある場合は、FSALでアプリケーションを起動するときにjavaコマンドで引数を使用してプロキシ設定を含めることができます。

多くの場合、ユーザーは企業ネットワーク内でFormsアプリケーションにアクセスします。場合によっては、ユーザーのマシンが、内部コンテンツと外部コンテンツの両方にアクセスするために適切なプロキシ構成を必要とすることを意味します。FSALを使用する場合、ブラウザおよびシステム・レベルの設定が、アプリケーションを起動するシェルに表示されないことがあります。そのため、FSALの実行時にこのような設定を含めることが必要な場合があります。

これを行うには、システム・プロキシ設定を参照する引数を使用するか、特定のプロキシ設定を含めます。

システム・プロキシ設定を使用するには、次のコマンドを入力してアプリケーションを実行します。

java -Djava.net.useSystemProxies=true –jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp"

引数-Djava.net.useSystemProxies=trueを指定すると、Javaはシステム・レベルで指定されたプロキシ設定を使用してコールを試行します。

ノート:

システムが自動構成スクリプト(wpad.datなど)を使用するように構成されている場合、このメソッドはサポートされない場合があります。詳細は、公式のJavaドキュメントを参照してください。

プロキシ設定を含めることもできます。プロトコル(HTTPSまたはHTTP)に応じた2つの例を次に示します。

java -Dhttps.proxyHost=<proxyserver> -Dhttps.proxyPort=<proxyserver port number> -Dhttps.nonProxyHosts="localhost|example.com" –jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp"
java -Dhttp.proxyHost=<proxyserver> -Dhttp.proxyPort=<proxyserver port number> -Dhttp.nonProxyHosts="localhost|example.com" –jar frmsal.jar -url "http://<server>:<port>/forms/frmservlet?config=standaloneapp"

Javaネットワークとプロキシに関する項を参照してください。

カスタム・プロトコル・ハンドラを使用したFSALの起動

ハイパーリンクとカスタムFSALプロトコルを使用して、Formsアプリケーションを起動できます。FSALでは、非SSLリクエストの場合はfsal、SSLリクエストの場合はfsalsという2つの特別なプロトコルが認識されます。

カスタム・プロトコルを使用するには、ユーザーのマシンにカスタム・プロトコルを登録し、目的のWebページに適切にフォーマットされたハイパーリンクを含めます。

ハイパーリンクでのカスタム・プロトコルの使用

次に、名前付きForms構成standaloneappでFSALを起動するために使用できるカスタム・プロトコルのハイパーリンクを使用するHTMLの例を示します。

<a href="fsal://<SERVER>:<PORT>/forms/frmservlet?config=standaloneapp">Run FSAL</a>

カスタム・プロトコルの登録

この新しいプロトコルをユーザーのマシンに登録するために必要なステップは、オペレーティング・システムによって異なります。この項では、Microsoft Windowsマシンに新しいプロトコルを登録するステップについて説明します。その他のオペレーティング・システムにカスタム・プロトコル・ハンドラを登録する場合は、オペレーティング・システムのドキュメントを参照するか、ベンダーに問い合せてください。

警告:

Windowsレジストリを変更すると、正しく実行されていないと元に戻せない破損が発生する可能性があります。試行する前に、必ずレジストリ・バックアップおよびシステム・リストア・ポイントを作成してください。Windowsレジストリの編集に慣れていない場合は、この操作を試行しないでください。

次のコマンドは、Windows DOSコマンド・プロンプトで個別に実行することも、スクリプトから実行することもできます。方法に関係なく、ユーザーは管理者権限を持っている必要があります。これは、Windowsレジストリに書き込むためです。

この項の例では、次のことを前提としています。

  • 最新のForms frmsal.jarが、ユーザーのホーム・ディレクトリに格納されています。
  • 最新のOracle Java 8 (32ビット) JREがインストールされています。動作保証された任意のOracle Javaバージョンを使用できますが、java実行可能ファイルの場所と一致するように、次の例のパスを調整してください。

次のコマンドでは、各セクションの最後のエントリを慎重に確認してください。javaw.exeへのパスと、ユーザーのマシン上のfrmsal.jarへのパスが状況を表していることを確認してください。使用されるJavaパスは、JREのインストール時にのみ作成される特別なパスです。JDKを使用する場合、このパスを更新する必要があります。

非SSLリクエストのコマンド

reg add HKEY_CLASSES_ROOT\fsal /t REG_SZ /d "Oracle Forms Standalone Launcher" /f
reg add HKEY_CLASSES_ROOT\fsal /v "URL Protocol" /t REG_SZ /d "" /f
reg add HKEY_CLASSES_ROOT\fsal /v "UseOriginalUrlEncoding" /t REG_DWORD /d "00000001"
reg add HKEY_CLASSES_ROOT\fsal\shell /f
reg add HKEY_CLASSES_ROOT\fsal\shell\open /f
reg add HKEY_CLASSES_ROOT\fsal\shell\open\command /t REG_SZ /d "\"C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaw.exe\" -jar %USERPROFILE%\frmsal.jar -url \"%1\"" /f

SSLリクエストのコマンド

reg add HKEY_CLASSES_ROOT\fsals /t REG_SZ /d "Oracle Forms Standalone Launcher with SSL/TLS" /f
reg add HKEY_CLASSES_ROOT\fsals /v "URL Protocol" /t REG_SZ /d "" /f
reg add HKEY_CLASSES_ROOT\fsals /v "UseOriginalUrlEncoding" /t REG_DWORD /d "00000001"
reg add HKEY_CLASSES_ROOT\fsals\shell /f
reg add HKEY_CLASSES_ROOT\fsals\shell\open /f
reg add HKEY_CLASSES_ROOT\fsals\shell\open\command /t REG_SZ /d "\"C:\Program Files (x86)\Common Files\Oracle\Java\javapath\javaw.exe\" -jar %USERPROFILE%\frmsal.jar -url \"%1\"" /f

前述のコマンドが正常に実行されると、http://またはhttps://のかわりにブラウザでプロトコルfsal://またはfsals://を使用できます。

ファイル・キャッシング

Javaプラグインやブラウザと同様に、FSALは、次回アプリケーションを起動したときに再利用される可能性のあるファイルをキャッシュして、起動パフォーマンスを向上させます。

メッセージのキャッシング

Unix/LinuxシェルまたはWindows DOSシェルからFSALを起動すると、ロード処理中にキャッシュされたファイルが格納されているディレクトリがシェル出力に表示されます。また、ファイルがサーバーからダウンロードされているか、既存のキャッシュから再使用されているかも表示されます。

(キャッシュされていない)新しいファイルをダウンロードすると、次のようなメッセージが表示されます。

Inspecting archive files in cache directory C:\Users\<user name>\AppData\Local\Temp\frmsal\<server name>\14.1.2.0
Downloading archive file frmall.jar to cache subdirectory 8ymuqdqvdfe13a0d5vvema0dh

以前にキャッシュされたファイルが使用されている場合、次のようなメッセージが表示されます。

Inspecting archive files in cache directory C:\Users\<user name>\AppData\Local\Temp\frmsal\<server name>\14.1.2.0
Using cached archive file frmall.jar from cache subdirectory 8ymuqdqvdfe13a0d5vvema0dh

tmpdirの変更

キャッシュ・ファイルの場所を制御するには、アプリケーションの起動時にtmpdirの場所を変更します。Microsoft Windowsユーザーの場合、次の例を考えてみます。Windowsシステム変数%USERNAME%の値を第1レベルのディレクトリとして使用することに注意してください。

java -Djava.io.tmpdir=C:/%USERNAME%/fsal -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp"

ノート:

ユーザーが共有Unix/Linuxプラットフォーム上にある場合、ダウンロードしたキャッシュ・ファイルは、アプリケーションを実行した最初のユーザーが所有するため、問題が発生する可能性があります。その結果、後続のユーザーは、古いキャッシュされたファイルを新しいファイルに上書きするための十分な権限を持っていない可能性があります。ユーザーごとに一意の場所を作成することで、この問題を回避できます。

java -Djava.io.tmpdir=/u01/$user/fsal -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp"

ファイル・キャッシングの無効化

一部のアプリケーションでは、キャッシュされたファイルを使用せずに、サーバーから常にダウンロードすることもできます。これは、技術的な問題をトラブルシューティングする場合にも当てはまる可能性があります。

ファイル・キャッシングを無効にするには:

  1. Fusion Middleware Control (FMC)を開き、FSALテンプレート・ファイル(アプリケーションに応じてbasesaa.txtまたはwebutilsaa.txt)を編集して、次の行を含めます。
    ignoreSaaCache=%ignoreSaaCache%
  2. Forms Web構成で、新しいパラメータignoreSaaCache[standaloneapp]構成またはアプリケーションの実行に使用される構成に追加します。
  3. 値をTRUEに設定します。

キャッシュされたファイルは無視され、アプリケーションを起動するたびにサーバーからファイルのダウンロードが実行されます。

セキュリティに関する考慮事項

FSAL、ユーザーのマシンおよびネットワークを計画して構成する場合は、この項のトピックを確認してください。

アプリケーション、アプリケーション内で交換されるデータ、およびアプリケーションがホストされるネットワークに対して最高レベルのセキュリティを確保することは、あらゆるアプリケーション・デプロイメントの最も重要な側面であると考える必要があります。セキュリティ層の脆弱化は、機密データ漏洩や悪意のあるシステム攻撃の原因となる可能性があります。アプリケーション、データ、およびホスティング・システムの保護に適切なセキュリティ対策が講じられていることを確認するのは、お客様の責任です。

ノート:

この項では、FSALの使用に関連するセキュリティを向上させるいくつかの方法について説明しますが、これらは単なる例です。概念を理解し、完全には理解していない部分を調査することは、お客様の責任です。セキュリティ構成を不適切に実装すると、システムが危険にさらされる可能性があります。

システムを構成したら、変更内容を正しいとみなす前に、慎重に確認してテストします。

ここで説明する提案は、FSALやOracle Forms全般に一意のものではない可能性があります。多くは、使用されている技術に関連する標準的な提案です。そのため、追加情報が広く入手可能になります。アプリケーション、そのデータ、およびその環境を保護するための唯一の情報源として、この項を使用しないでください。

この項の最後に記載されているリソースに関する項も確認してください。

Secure Socket Layer

Secure Socket Layer (SSL)およびTransport Layer Security (TLS)を使用してネットワーク上で通信するすべてのアプリケーションを実行することは、データを保護するために非常に重要です。任意およびすべてのアプリケーションを実行するためのSSL/TLSの使用は、オプションではなく要件とみなす必要があります。

Secure Socket Layer (SSL)およびTransport Layer Security (TLS)は、ネットワーク・トラフィックのソースと宛先の間の暗号化された通信を提供するために使用される暗号化プロトコルです。これらのプロトコルは、信頼できる接続を作成することによって機能します。この接続は、ほとんどの場合、公開キーと秘密キーの交換によって確立されます。

SSL/TLSをFSALとともに使用してアプリケーションを実行するには、SSL/TLS証明書公開キーをユーザーのJava TrustStoreに含める必要があります。この証明書がまだTrustStoreに含まれていない場合、またはDigiCert、Entrust、Comodoなどの既知の認証局によって提供されていない場合は、証明書のインポートが必要になる可能性があります。

ノート:

この項では、「KeyStore」と「TrustStore」という用語は同じ意味で使用されます。

このキーは、フォームの実行にFSALが使用しているJava TrustStoreにインポートする必要があります。多くの場合、ルート証明書のみが必要ですが、証明書のチェーンが存在する可能性があるため(ルート、中間、ユーザーなど)、複数の証明書のインポートが必要になる可能性があります。

SSL/TLSを使用してアプリケーションを実行しようとしたときに、必要な証明書が見つからないか、不適切にインポートされた場合、次のようなJavaエラーが表示されることがあります

java.security.cert.CertificateException: No subject alternative names present …
java.security.cert.CertificateException: No name matching <server>:<port> found …
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: …

前述のいずれかのエラー、または類似のエラーに続いて、FSALエラーが表示されます。

FRM-92490: Unable to fetch applet parameters from server.

これは、セキュア接続を確立できず、アプリケーションの起動と実行に必要なパラメータのダウンロードが許可されなかったためです。

FSALを使用したSSL/TLSの構成

FSAL証明書インポータまたはJava提供ツールを使用して、SSL/TLS証明書をインポートおよび格納します。デフォルトの方法はFSAL証明書インポータです。

FSAL証明書インポータの使用

サーバーから最初のフィードバックを受信すると、FSALはTrustStoreをチェックして、配信された証明書が既知かどうかを判断します。既知であり信頼できるとみなされた場合、アプリケーションは中断することなく実行されます。

証明書が不明な場合、その旨を示すプロンプトが表示され、ユーザーは新しい証明書をインポートできるようになります。このプロンプトには、配信された証明書の詳細を提供する詳細情報のリンクが含まれています。

ユーザーが「OK」をクリックすると、Forms/FSALで使用される新しく作成されたJava TrustStoreに新しい証明書が挿入されます。このFSALで作成されたTrustStoreは、ユーザーがランタイム・スイッチcert_truststore"java"に設定して無効にしないかぎり、以降のすべてのリクエストでFSALによって使用されます。

この新しいJava TrustStoreは、ユーザーのホーム・ディレクトリ、具体的には次の場所に作成されます。

C:\Users\<USER NAME>\Oracle\forms

TrustStoreファイル名はformstruststoreです。生成されたTrustStoreの名前の変更はサポートされていません。ファイルが見つからない場合は、新しい空のファイルが作成されます。これはJavaで生成された標準のTrustStoreファイルであるため、必要に応じて、Oracle Javaインストールにあるツール(keytool.exe)を使用して、このファイルを管理できます。

アプリケーションの実行時に、autoImportCertスイッチを使用して、不明な証明書を自動的にインポートできます。trueに設定すると、証明書がインポートされる前にプロンプトが表示されません。このオプションは推奨されておらず、主にテスト目的で提供されます。次に、その使用方法の例を示します。

java -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp" -autoImportCert true

詳細は、使用方法のWebページにリストされているFSALコマンドライン引数を参照してください。コマンドライン引数のリストは、「FSALコマンドライン引数」にもあります。

KeyStoreの手動構成

前の動作に戻す方法の詳細は、このドキュメントの最後付近に記載されているコマンドライン・オプションを参照してください。

FSAL SSL/TLS証明書インポータを使用することが望ましくない場合は、FSALを使用する前に次のステップに従います。また、使用中の証明書とFSAL証明書インポータとの互換性の問題が特定された場合も、これらのステップを完了することが必要になる可能性があります。一部の非標準証明書または自己生成証明書は、FSAL証明書インポータと互換性がない可能性があります。

  1. 既知の認証局からSSL/TLS証明書を取得し、Oracle HTTP Server (またはWebLogic Server)を、それらのコンポーネントのドキュメントに記載されている手順に従って構成します。
  2. 証明書の公開キー部分を取得します。

    証明書の公開キー部分は、ユーザーのマシンで必要です。公開キーがない場合は、取得する方法がいくつかあります。キー・チェーンの取得は、サーバーにアクセスできる任意のマシンから実行できます。次に、opensslコマンドを使用してキーを取得する方法の例を示します。<server>:<port>は、必ずサーバー名およびSSL/TLSポート番号に置き換えてください。

    openssl s_client -showcerts -connect <server>:<port> > output.txt

    ノート:

    これはほとんどのUnix/Linuxプラットフォームに事前にインストールされていますが、Microsoft Windowsでも入手できます。

    このコマンドの実行結果は、output.txtという名前のファイルに保存されます。ファイルには、1つ以上の証明書が含まれます(証明書のタイプと作成方法によって異なります)。証明書は、BEGINとENDのヘッダー/フッターの間の内容です。

  3. 各証明書を独自のテキスト・ファイルにコピーします。

    必ず、次に示すとおりにBEGINとENDのテキストを正確に記載し、その間に内容を記載してください。ファイルを保存する際には、-----BEGIN CERTIFICATE-----または-----END CERTIFICATE-----の上または下に余分な行を含めないでください。ただし、これらのヘッダー/フッターのエントリは含めてください。

    例:

    -----BEGIN CERTIFICATE-----
    MIIFKDCCBBCgAwIBAgIBPTANBgkqhkiG9w0BAQsFADCBrjEpMCcGA1UEAxMgTmlj
    Y2subWFuc0BvcmFjbGUuY29tMRAwDgYDVQQLEwdTdXBwb3J0MQ8wDQYDVQQKEwZP
    cmFjbGUxGTAXBgNVBAcTEENvbG9yYWRvIFNwcmluZ3MxETAPBgNVBAgTCENvbG9y
    . . .
    -----END CERTIFICATE-----

    ヒント:

    または、次を実行して、必要な証明書ファイルを直接生成します。

    openssl s_client -showcerts -servername <server name> -connect <server>:<port> | openssl x509 -outform PEM > cert.cer
  4. 公開キーをユーザーのマシンのKeyStoreにインポートします(たとえば、cacerts)。

    証明書チェーンの場合は、必ずチェーン内のすべてのキー(署名者、中間、ルートなど)をインポートしてください。つまり、keytoolユーティリティを複数回実行することが必要な場合があります。証明書公開キーをインポートするには、ほとんどのOracle Javaディストリビューションに含まれているJava keytoolユーティリティを使用します。

    次に、keytoolユーティリティを使用して各証明書をインポートする方法の例を示します。keytoolユーティリティの使用方法の詳細は、Oracle Javaのドキュメントを参照してください。

    keytool -importcert -alias <server_name> -keystore <JAVA_HOME>/jre/lib/security/cacerts -file cert.cer

    ノート:

    別名は一意である必要があります。チェーンに複数の証明書がある場合は、それぞれに一意の別名が必要です。ただし、最初にルートをインポートし、サーバーの名前を別名として使用する必要があります。以前に使用された別名を使用しようとすると、エラーが発生します。サーバーの名前を別名で使用することをお薦めします。たとえば、ルート証明書を最初にインポートし、myserverという名前を付け、2番目はmyserver2、3番目はmyserver3という名前にします。
  5. 自動証明書インポータをバイパスするために、スイッチ-cert_truststoreをjavaに設定して、SSLを使用してFSALを実行します。
    java -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp" –cert_truststore java

SSL/TLSに関するトラブルシューティング

証明書に問題が発生した場合は、必要に応じて次のステップを試してください。
  • 証明書がJavaキーストアに手動で挿入された場合は、正しいKeyStoreが更新されたことを確認します。

    デフォルトでは、KeyStoreはJRE_HOME/lib/securityまたはユーザーのホーム・ディレクトリにあります。デフォルトのファイル名(FSAL証明書インポータを使用しない場合)はcacertsです。ファイルの変更日時が、インポート・コマンドが実行されたタイミングと同じであることを確認します。

    FSAL証明書インポータを使用する場合、TrustStore名はformstruststoreです。

  • チェーン内のすべての証明書がインポートされたことを確認します。

    多くの場合、ルート証明書のみが必要です。証明書チェーンがあると思われる場合は、次のJavaコマンドを使用して、すべての証明書をリストして確認できます。

    keytool -list -keystore "C:\java\jdk\jre\lib\security\cacerts"
  • 更新されたKeyStoreまたはTrustStoreがJRE_HOMEまたはユーザーのホーム・ディレクトリにない場合は、JRE_HOMEにコピーします。上書きする前に、必ずファイルのバックアップ・ファイルを作成してください。
  • Java SSL/TLSデバッグを有効にします。

    デバッグ・モードを有効にするには、次のようにFSALおよび目的のフォームを実行します。

    java -Djavax.net.debug=all –jar frmsal.jar -url https://<server>:<port>/forms/frmservlet?config=standaloneapp

    出力は、次のようにテキスト・ファイルにリダイレクトすることもできます(Microsoft Windowsの場合)。

    java -Djavax.net.debug=all –jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp" > C:/existing_directory/output.txt
  • 必要な証明書を含むKeyStoreまたはTrustStoreが(デフォルトの場所にある)デフォルトでない場合は、keystoreまたはtruststoreスイッチを使用して目的のファイルを明示的に参照できます。
    java -Djavax.net.ssl.keystore=C:/somewhere/mycacerts -jar frmsal.jar -url "https://server:port/forms/frmservlet?config=standaloneapp"

    または

    java -Djavax.net.ssl.truststore=C:/somewhere/mycacerts -jar frmsal.jar -url "https://server:port/forms/frmservlet?config=standaloneapp"

署名付きコード

Oracle Formsの場合、デジタル署名証明書がOracle提供のForms Java JARファイルに追加されます。このデジタル署名は、アプリケーション所有者がユーザーによって認識され、信頼されていることを確認するのに役立ちます。

Forms、Java Plug-inおよびJava Web Start

Java Plug-inまたはJava Web Startを使用してブラウザからJavaアプリケーションを実行するには、ハイパーリンクまたはブックマークをクリックするか、ブラウザにURLを手動で入力します。これにより、ユーザーのシステムが危険にさらされる可能性があります。ユーザーのマシン上で悪意のあるJavaアプリケーションを開くリンクから保護するために、Java Plug-inおよびJava Web Startには、署名付き(および信頼できる)アプリケーションのみ実行を許可する要件など、特別なセキュリティ機能を備えています。署名されていないアプリケーションは許可されず、ブロックされます。

ユーザーのマシン上で実行されるOracle Formsが提供するすべてのJava JARファイルは、Javaのセキュリティ要件に準拠するために署名されています。これにより、FormsアプリケーションをJava Web Startで安全に実行できます。さらに、カスタムJARファイル(Oracleが提供していないもの)も、信頼できる証明書で適切に署名する必要があります。Oracleから提供されていないJARへの署名は、お客様の責任です。

ノート:

自己生成証明書の使用は推奨されていないため、使用しないようにしてください。自己生成証明書の使用は機能しているように見えますが、今後この機能に対するサポートがJavaから削除される可能性があります。

独自のJARファイルに証明書を追加する方法の詳細は、jarsignerユーティリティとそのドキュメントを参照してください。

FSALおよび署名付きJAR

FSALを使用する場合を含め、すべてのデプロイメントでJAR署名をお薦めします。FSALを使用すると、ブラウザの使用に伴う固有のリスクがほとんど回避されるため、このクライアント構成が急速に推奨されるアプローチになりつつあります。ただし、アプリケーション・デプロイメントを計画する際には、セキュリティ上のすべての側面を引き続き慎重に考慮する必要があります。

FSALのようなネイティブJavaアプリケーションの実行には、Java Plug-inやJava Web Startにあるのと同じレベルの組込みセキュリティ・チェックはありませんが、限定されたレベルの署名付きコード検証を有効にすることができます。

ノート:

バージョン11より新しいJavaバージョンでは、次のものが非推奨になりました。Java 17からJava 23を使用してこの機能を有効にすると、警告が表示される場合があります。Oracle Java 24以降では、この機能はサポートされなくなり、機能を実行する機能は削除されます。これらの手順は、レガシーの目的のみで提供されています。

FSAL、特にアプリケーションで署名付きコードが認識されるようにするには:

  1. アプリケーションで使用されるすべてのJARファイルに関連付けられている公開キーを取得します。

    Oracle提供のJARは、配信時に署名され、この証明書はデフォルトでKeyStoreに含まれます。使用するJARファイル用の署名者の公開キーが使用できない場合は、各JARに対して次のJavaコマンドを使用して証明書を取得します。

    keytool -printcert -rfc -jarfile <yourJarFile>.jar

    レスポンスに次のような出力が表示されます:

    -----BEGIN CERTIFICATE-----
    MIIG7zCCBNegAwIBAgIQCl39nB4pDWNpkID7lx+kLjANBgkqhkiG9w0BAQsFADBp
    MQswCQYDVQQGEwJVUzEXMBUGA1UEChMORGlnaUNlcnQsIEluYy4xQTA/BgNVBAMT
    ...
    2ROzDhwQmGHIbDXUo8jXX7NGHdpyZovPm//IO/zp9d6Anka/B3viZlii4eAz6Xbv
    yIafqfh5fS9ZLb4kSHKgf87f4Zlm8YElQF+ZJ+rGVT5xArbEjxcoLyzpmmLWCPeI
    yTifK4P1GgeEhdWol7/R25bAKyPr9OrySnQx9vnUbmKa120i13/mhJm2gXp7qG+P
    uxx1l3SL/yU8gbmOdRno6CcANWLUvQ5FjMVppV8FVPf+7gyhsKrAYP2SMNy2F0qi
    1OIF
    -----END CERTIFICATE-----

    ノート:

    返される最初の証明書は署名者の証明書で、後続のステップに必要な証明書になります。
  2. 最初の証明書の内容をテキスト・ファイル(この例ではfoo.pem)にコピーします。コピーされた内容は、"-----BEGIN CERTIFICATE-----"で始まり、"-----END CERTIFICATE-----"で終わる必要があります。
  3. ユーザーのマシンで、各公開キーを実行時に使用するJavaキーストアにインポートします。

    keytool -importcert -alias foo -file C:\foo.pem

    前述の別名には任意の英数字文字列を指定できますが、次のステップで必要になるため、必ず覚えておいてください。また、–keystoreスイッチが含まれていなかったため、ユーザーのホーム・ディレクトリ内のKeyStoreが使用されます(存在しない場合は作成されます)。ファイル名は".keystore"になります。別のKeyStoreまたはKeyStore名(あるいはその両方)を使用するには、必要に応じて–keystoreスイッチを追加します。

  4. 証明書ごとに前述のステップを繰り返します。
  5. .java.policyファイルが存在しない場合、または完全にカスタマイズされたファイルが必要な場合は、ユーザーのホーム・ディレクトリにファイルを作成します。それ以外の場合は、デフォルトのファイル<JAVA_HOME>\jre\lib\security\java.policyを使用します

    これに次の内容を追加します。

    keystore ".keystore";
    grant signedBy "foo" {
       permission java.security.AllPermission;
    };

    "foo"参照は、ステップ2で使用された別名へのポインタです。ステップ2でインポートした各キーにgrant signedByセクションを追加します。KeyStoreの値は、使用する予定のKeyStoreファイルへのポインタです。

  6. 若干変更した次のコマンド・エントリを使用して、FSALでFormsアプリケーションを実行します。

    java -Djava.security.manager -jar frmsal.jar -url "https://yourserver:port/forms/frmservlet?config=standaloneapp"

アプリケーションを実行する際に、JAR証明書はKeyStoreの証明書と照合されます。一致しない場合、アプリケーションは実行されません。前述の例では、デフォルトのjava.policyが使用されているか、ユーザーのホーム・ディレクトリに.java.policyが作成されたことを前提としています。

java -Djava.security.manager -Djava.security.policy=${user.home}/foo.policy -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp"

ユーザーのマシン上の別のディレクトリまたはリモートの場所(URL)からカスタム・ポリシー・ファイルにアクセスすることもできます。

java -Djava.security.manager -Djava.security.policy=https://<server>:<port>/foo.policy -jar frmsal.jar -url "https://<server>:<port>/forms/frmservlet?config=standaloneapp"

ノート:

ユーザーがこの検証を確実に利用できるようにするには、起動スクリプトまたは類似のスクリプトを使用する必要があります。スクリプトを使用することで、入力ミスやセキュリティ・マネージャが使用されない可能性を回避できます。

シングル・サインオン

シングル・サインオンは、Webアプリケーションに多くの有益な利点をもたらす認証の概念です。Formsをシングル・サインオン(SSO)と統合するという考え方は、Formsアプリケーションを実行するためのデータベース資格証明をユーザーから隠すことができるため、たいていの場合、Formsのデータベース・ログイン機能を使用するよりも大きな利点があると考えられています。

FSALでSSOを使用するには、他のケースでFormsでSSOを使用するために必要な構成ステップと同じステップを実行する必要があります。FormsでのSSOの構成方法とその動作の詳細は、「Oracle Access ManagerでのForms Servicesの使用」を参照してください。

特定のアプリケーションに対してSSOを有効にするには、保護するアプリケーションに関連付けられたForms Web構成設定の目的のアプリケーション構成でssoMode=trueを設定します。

FSALリファレンス

FSALパラメータおよびコマンドライン引数の詳細は、この項を参照してください。関連ドキュメントへのリンクもあります。

FSAL Web構成パラメータ

FSALサーブレットとアプレット・パラメータの詳細は、このトピックを参照してください。

表-8 FSAL Web構成パラメータ

サーブレット/アプレット・パラメータ 説明
ignoreSaaCache

既存のキャッシュを無視し、サーバーから新しいファイルをダウンロードするかどうかを指定します。

有効な値: TRUEFALSE

デフォルト: FALSE

ignoreMissingSaaArchives

起動時に構成されているが見つからないJARファイルを無視するかどうかを指定します。TRUEに設定されている場合、アーカイブが見つからないと、エラーが発生しますが、セッションは続行しようとします。これはデフォルトの動作です。FALSEに設定されている場合、FSALは可能であれば続行しようとしますが、そうでない場合は失敗します。

ノート:

これは通常、テストとデバッグにのみ使用します。

有効な値: TRUEFALSE

デフォルト: FALSE

fsalEnableAutoUpdate

FSALがサーバーのバージョンと一致しない場合に、自動的に更新されるかどうかを指定します。自動更新はパッチ・アップデートでのみサポートされています。

有効な値: TRUEFALSE

デフォルト: TRUE

fsalJavaVersion アプリケーションの実行に必要なJavaバージョンを指定します。可能な値の組合せについては、「Web構成パラメータ」「fsalJavaVersion」を参照してください。
fsalUpdateDialogText

自動更新ダイアログを表示する際に表示するテキストを指定します。

有効な値: 最大長が128文字未満の文字列

ssoSaaBrowserLaunchTimeout

SSO認証用にFSALによって起動されたブラウザからの初期リクエストをFormsサーブレットが待機する時間を秒単位で指定します。間隔の期限が切れると、致命的エラーFRM-93249がレポートされます。

有効な値: 1から300までの整数。

デフォルト: 15

ssoSaaBrowserPageTimeout

FSALアプリケーションのSSO認証中、ユーザーによるブラウザ・ページへのデータの入力をFormsサーブレットが待機する時間を秒単位で指定します。間隔の期限が切れると、致命的エラーFRM-93382または FRM-93383がレポートされます。

有効な値: 15以上の整数、または0 (無期限に待機)。

デフォルト: 0

ssoSaaWaitInterval

起動されたブラウザでSSO認証が進行中に、FSALがFormsサーブレットにリクエストを再発行する間隔を秒単位で指定します。値を大きくするとネットワーク・トラフィックが減少しますが、タイムアウトの可能性が高くなり、致命的エラーFRM-93248が発生します。

有効な値: 5以上の整数、または0 (リクエストを再発行しません)。

デフォルト: 25

ssoSuccessLogonURL FSALアプリケーションに対するSSO認証が正常に完了した場合にリダイレクトするURL。

FSALコマンドライン引数

FSALコマンドライン引数の詳細は、このトピックを参照してください。

表-9 FSALコマンドライン引数

引数 説明
-url

Formsアプリケーションの実行に必要な完全修飾URLを指定します。URLには、必要なFSAL設定(config=standaloneappなど)を含む必要な構成参照を含める必要があります。

URLは引用符で囲む必要があります。

ノート:

SSL/TLSを使用しない場合、URLエントリからプロトコルhttp://を省略できます。
-t

タイムアウトするまでにサーバーの初期応答をランチャが待機する時間(ミリ秒)を指定します。

有効な値: 正の整数(>= 1)

デフォルト: 60000 (ミリ秒)

-showConfig

アプリケーションのロード時にForms Web構成パラメータをコマンドラインに表示するかどうかを指定します。

有効な値: TRUEFALSE

デフォルト: FALSE

-showDetails

アプリケーションのロードおよび起動に関する追加の詳細を表示するかどうかを指定します。

有効な値: 01299

値の説明:

  • 0: 追加情報を表示しません。
  • 1: リソースのロード元の場所を表示します。
  • 2: 証明書情報がFSAL TrustStoreにない場合、SSL/TLS関連情報を表示します。
  • 99: すべての詳細を表示します。

ノート:

その他の値は、将来の使用のために予約されています。

デフォルト: 0

-changeFSALStorePass

FSALカスタムTrustStoreのパスワードを変更するかどうかを指定します。デフォルトのパスワードは作成時に設定されます。そのパスワードはchangeitです

ほとんどの場合、秘密キー/証明書情報が含まれていないかぎり、ユーザーのマシン上のTrustStoreにパスワードを設定する理由はありません。

有効な値: TRUEFALSE

デフォルト: FALSE

-autoImportCert

SSL/TLS証明書をユーザーとの対話なしでインポートするかどうかを指定します。cert_truststoreが設定されている場合、この引数は無視されます。

有効な値: TRUE、FALSE

デフォルト: FALSE

-cert_truststore

SSL/TLS証明書を保存するためにForms TrustStoreを使用するか、カスタムKeyStoreを使用するかを指定します。値が"forms"または未設定の場合、Formsで生成されたJava TrustStoreが使用されます。

値が"java"の場合、FSALはSSL/TLS証明書の保存と検証にJavaのデフォルトのKeyStoreを参照します。

ノート:

Javaデフォルト・ストアを使用する場合は、SSL/TLSアプリケーションを実行する前に、必要な証明書を手動でインポートする必要があります。

有効な値: formsjava

デフォルト: forms

-bypassHostnameVerification

SSL/TLS証明書の検証時にホスト名検証の失敗を無視するかどうかを指定します。これをTRUEに設定すると、接続を検証できない場合でもアプリケーションを実行できます。これは本質的に安全ではなく、設定しないことが強く推奨されています。このオプションは、cert_truststoreオプションが"java"に設定されている場合は無視されます。

有効な値: TRUEFALSE

デフォルト: FALSE

-clearcache

FSALキャッシュをクリアするかどうかを指定します。-url引数は、-clearcacheとともに使用すると無視されます。

有効な値: TRUEFALSE

デフォルト: FALSE