4.7. アプリケーション認証

ユーザーがリンクをクリックしてアプリケーションを起動すると、アプリケーション用に設定されているログインスクリプトがアプリケーションサーバーに接続し、認証処理後、アプリケーションを起動します。

実行プロトコルエンジンは、ログインスクリプトを実行する SGD コンポーネントです。ログインスクリプトは、SGD アプリケーションサーバーのパスワードキャッシュに格納されているユーザー名とパスワードを送信することによって、ユーザーをアプリケーションサーバーに対して認証します。ユーザーの資格情報に関する問題が存在する場合、SGD は、次のような「アプリケーション認証」ダイアログを表示します。

図4.1 SGD の「アプリケーション認証」ダイアログのスクリーンショット

SGD の「アプリケーション認証」ダイアログを示すスクリーンショット

「アプリケーション認証」ダイアログでは、ユーザーが自身の資格情報を入力し、アプリケーションサーバーのパスワードキャッシュに格納できます。パスワードキャッシュに格納することで、次回同じアプリケーションサーバー上でアプリケーションを実行したときに資格情報の入力を要求されなくなります。

ユーザーはまた、Webtop 上でアプリケーションのリンクを Shift キーを押しながらクリックすることによって、SGD に強制的に「アプリケーション認証」ダイアログを表示させることもできます。

このセクションの内容は、次のとおりです。

4.7.1. ログインスクリプト

SGD は、ログインスクリプトを使用して、アプリケーションサーバーへの接続を処理したり、アプリケーションを実行したり、追加のタスクを実行したりします。

通常、ログインスクリプトでは次の作業を実行します。

  • アプリケーションサーバーにログインし、必要に応じてユーザーにパスワードの入力を要求する。

  • 環境変数を設定します。これらは、アプリケーションオブジェクトの「起動」タブの「環境変数」属性で指定された環境変数です。

  • すべてのウィンドウマネージャープログラムを起動する。これらは、アプリケーションオブジェクトの「プレゼンテーション」タブの「ウィンドウマネージャー」属性で指定されたプログラムです。

  • 必要に応じて入力方式を起動する (UNIX プラットフォームアプリケーションのみ)。

  • コマンドを実行してアプリケーションを起動する。

ログインスクリプトは、アプリケーションサーバー間の相違を考慮に入れて、ログインプロセス中に発生する可能性のあるエラーを検査します。処理できないエラーを検出した場合、制御をユーザーに返します。

SGD ログインスクリプトは、できるだけ汎用性と堅牢性を備えるように設計されています。しかし、一般的ではない状況に対処しなければならない場合もあります。たとえば、サポートされていないシステムプロンプトを使用している場合は、スクリプトが認識するプロンプトのリストに、そのプロンプトを追加できます。

SGD に用意されているログインスクリプトには、「アプリケーション認証」ダイアログの表示を (たとえば、「ユーザー名」や「パスワード」のフィールドに独自のラベルを追加することによって) カスタマイズするために使用できるコマンドや手順も含まれています。

ログインスクリプトをカスタマイズする必要がある場合は、SGD ログインスクリプトのコピーを作成し、そのコピーに対して作業します。標準の SGD ログインスクリプトは変更しないでください。付録E ログインスクリプトには、SGD ログインスクリプトに関する詳細な参照情報が含まれています。

4.7.2. アプリケーション認証の構成

Administration Console では、「グローバル設定」 → 「アプリケーション認証」タブにある属性によってアプリケーション認証が制御されます。これらの属性を使用すると、次の設定を行うことができます。

  • ユーザーの SGD ユーザー名とパスワードの詳細がキャッシュされている場合、アプリケーションサーバーへのログイン時に、これらの情報を自動的に試行するかどうか

  • ユーザーのアプリケーションサーバーパスワードが期限切れになった場合に実行されるアクション

  • スマートカードを使用して Microsoft Windows アプリケーションサーバーにログインするかどうか

  • 「アプリケーション認証」ダイアログをいつ表示するか、ダイアログのデフォルト設定を何にするか、およびユーザーにその設定の変更を許可するかどうか

4.7.3. アプリケーションサーバーのパスワードキャッシュ

デフォルトでは、SGD は、アプリケーションを実行するために使用されるユーザー名とパスワードをそのアプリケーションサーバーのパスワードキャッシュ内に格納します。SGD はまた、SGD にログインするために使用されるユーザー名とパスワードも格納します。

注記

ユーザーがサードパーティー認証で認証されている場合、SGD は、SGD にログインするために使用されるユーザー名とパスワードを格納できません。

Windows アプリケーションの場合は、リモートデスクトップセッションホストによって認証プロセスが処理されます。認証が成功したか失敗したかを示す情報が SGD に返されないため、それが正しいかどうかにかかわらず、詳細情報は SGD パスワードキャッシュ内に残ります。

4.7.3.1. アプリケーションサーバーのパスワードキャッシュの管理

Administration Console で、アプリケーションサーバーのパスワードキャッシュを次のように管理できます。

  • 「キャッシュ」 → 「パスワード」タブ – このタブでは、パスワードキャッシュ内の任意のエントリを管理できます

  • ユーザープロファイルオブジェクトの「パスワード」タブ – このタブでは、選択したユーザープロファイル用のパスワードキャッシュエントリを管理できます

  • アプリケーションサーバーオブジェクトの「パスワード」タブ – このタブでは、選択したアプリケーションサーバー用のパスワードキャッシュエントリを管理できます

  • 動的アプリケーションサーバーオブジェクトの「パスワード」タブ – このタブでは、選択した動的アプリケーションサーバー用のパスワードキャッシュエントリを管理できます。

コマンド行では、tarantella passcache コマンド群を使用してアプリケーションサーバーのパスワードキャッシュを管理します。

Administration Console とコマンド行を使用して、パスワードキャッシュ内のエントリを一覧表示したり、削除したりすることができます。また、パスワードキャッシュ内にエントリを作成することもできます。tarantella passcache コマンドを使用すると、バッチスクリプトでパスワードキャッシュを生成できます。

パスワードキャッシュ内の各エントリには次の要素が含まれます。

  • ユーザー名 – アプリケーションサーバーのユーザー名

  • パスワード – アプリケーションサーバーのパスワード

  • リソース – パスワードがキャッシュされている対象のアプリケーションサーバー、動的アプリケーションサーバー、またはドメイン名

  • ユーザー識別情報 – パスワードキャッシュ内のエントリを「所有している」ユーザーの識別情報

注記

そのユーザーの SGD パスワードもパスワードキャッシュに格納できます。

4.7.3.2. セキュリティーとパスワードキャッシュ

アプリケーションサーバーのパスワードキャッシュ内のエントリは、暗号化鍵によって暗号化されます。アプリケーションの起動時に、パスワードは必要に応じて復号化されます。

デフォルトでは、パスワードキャッシュ用の暗号化鍵は決して変更されません。SGD サーバーが再起動した場合は常にパスワードキャッシュのための新しい暗号化鍵を生成するように SGD を構成できます。Administration Console で、「グローバル設定」 → 「セキュリティー」タブに移動し、「新規パスワード暗号鍵」チェックボックスを選択します。または、次のコマンドを実行します。

$ tarantella config edit --security-newkeyonrestart 1

パスワードキャッシュ内の既存のエントリは、新しい鍵によって再び暗号化されます。

4.7.3.3. Windows ドメインとパスワードキャッシュ

SGD が Microsoft Windows アプリケーションサーバー用のユーザーのパスワードをキャッシュすると、Windows ドメイン名を使用してパスワードキャッシュエントリが作成されます。

ドメイン名は、アプリケーションサーバーオブジェクト、Windows アプリケーションオブジェクト、またはユーザープロファイルオブジェクトの「ドメイン名」属性を使って指定できます。ユーザーは「アプリケーション認証」ダイアログでドメイン名を指定することもできます。

ユーザーがアプリケーションを起動すると、SGD は次のプロセスを実行して、使用するドメイン名とパスワードキャッシュエントリを確立します。

  1. ドメイン名がアプリケーションサーバーオブジェクトで設定されているかどうか確認する。

    ドメイン名が設定されている場合、SGD は、パスワードキャッシュ内でユーザー識別情報のエントリを検索します。

    ドメイン名が設定されていない場合、またはパスワードキャッシュ内にエントリが存在しない場合、手順 2 に進みます。

  2. ドメイン名がアプリケーションオブジェクトで設定されているかどうか確認する。

    ドメイン名が設定されている場合、SGD は、パスワードキャッシュ内でユーザー識別情報のエントリを検索します。

    ドメイン名が設定されていない場合、またはパスワードキャッシュ内にエントリが存在しない場合、手順 3 に進みます。

  3. ユーザープロファイルオブジェクトでドメイン名が設定されているかどうかを確認します。

    ドメイン名が設定されている場合、SGD は、パスワードキャッシュ内でユーザー識別情報のエントリを検索します。

    ドメイン名が存在しないか、またはパスワードキャッシュ内にエントリが存在しない場合、SGD は「アプリケーション認証」ダイアログを表示します。

ユーザーは、「アプリケーション認証」ダイアログの「NT ドメイン」フィールドを使用してドメイン名を設定できます。「ドメイン名」属性がアプリケーションサーバーまたはアプリケーションオブジェクトで設定されている場合、またはドメインがパスワードキャッシュにキャッシュされている場合、このフィールドは自動的に入力されます。「ドメイン名」属性がユーザープロファイルオブジェクトでのみ設定されている場合、「NT ドメイン」フィールドは自動的には入力されません。

Windows アプリケーションをはじめて起動するときにドメインを指定するようユーザーに要求するには、ユーザープロファイルオブジェクト、アプリケーションサーバーオブジェクト、およびアプリケーションオブジェクトの「ドメイン名」属性を空白にする必要があります。

ユーザーの SGD パスワードがそのユーザーの Windows ドメインパスワードでもある場合は、次の条件が満たされると、ドメイン名とパスワードをキャッシュできます。

  • SGD が、そのユーザーの SGD ユーザー名とパスワードをパスワードキャッシュ内に保存するように構成されている必要があります。SGD は、デフォルトでこれを実行します。

  • ユーザープロファイルオブジェクトで「ドメイン名」属性が設定されている必要があります。

4.7.4. 入力方式と UNIX プラットフォームアプリケーション

入力方式はプログラムまたはオペレーティングシステムコンポーネントであり、キーボードにない文字や記号をユーザーが入力できるようにします。

デフォルトでは、SGD は、すべてのロケールで IM を実行します (C と POSIX を除く)。

IM の構成を変更するために、vars.exp ログインスクリプト内の変数を編集できます。変数は次のとおりです。

  • IM_runByDefault – この変数は、IM をデフォルトで有効にするか (変数が 1 に設定される)、または無効にするか (変数が 0 に設定される) を制御します。デフォルトは 1 です。

  • IM_localeNotListIM_runByDefault1 に設定されている場合、SGD は、IM_localeNotList 変数に一覧表示されているロケールを除くすべてのロケールで IM を実行します。

  • IM_localeListIM_runByDefault0 に設定されている場合、SGD は、IM_localeList 変数に一覧表示されているロケールでのみ IM を実行します。

SGD は、環境変数 TTA_PreferredLocaleTTA_HostLocale、および LANG を使用してロケールを判定します。「ログインスクリプトの変数」を参照してください。

4.7.5. 異なる言語のシステムプロンプトのサポートを追加する

デフォルトでは、SGD に用意されているログインスクリプトは、アプリケーションサーバー上で英語のシステムプロンプトをサポートしています。SGD 管理者は、ほかの言語でのシステムプロンプトのサポートを追加できます。

このためには、vars.exp ログインスクリプトを編集して、定義されている英語プロンプトごとに翻訳を追加します。vars.exp ログインスクリプトは、SGD サーバー上の /opt/tarantella/var/serverresources/expect ディレクトリ内にあります。すべてのプロンプトを翻訳する必要はありません。英語と異なるプロンプトだけを翻訳してください。このファイルに含まれる例を参照することをお勧めします。また、クライアントやユーザーのロケールに合わせて、変数、文字列、およびエラーメッセージセクションの翻訳を追加することもできます。

Administration Console で、アプリケーションサーバーオブジェクトの「一般」タブ → 「プロンプトのロケール」属性を、vars.exp で定義されたロケールに一致するように構成します。

4.7.6. RSA SecurID を使用したアプリケーション認証

SGD は、X アプリケーションと文字型アプリケーションに対して RSA SecurID 認証をサポートしています。

SecurID 認証を使用するには、SGD を導入する前に、ユーザーが SecurID を使用してアプリケーションサーバーにログインできることを確認してください。SecurID 認証を使用する準備ができたら、securid.exp ログインスクリプトを使用するようにアプリケーションオブジェクトを設定します。

SecurID 認証を使用するアプリケーションサーバーにログインするとき、ユーザーはユーザー名とパスワードを入力します。「OK」をクリックすると、パスコードの入力が求められます。

Administration Console で、「グローバル設定」 → 「アプリケーション認証」タブに移動し、「パスワードキャッシュの使用」チェックボックスの選択を解除します。これにより、アプリケーションサーバーへのログイン時に、SGD が SGD ログインの詳細を使用しなくなります。

4.7.7. Windows アプリケーション認証でのネットワークレベル認証の使用

SGD は、Windows アプリケーションに対して CredSSP を使用したネットワークレベル認証 (NLA) をサポートしています。NLA は、リモートデスクトップセッションホストへの接続を確立する前にユーザーを認証することによって、高いセキュリティーを提供します。

NLA は、Windows 2008 R2、Windows 7、および Windows 2008 アプリケーションサーバーで使用できます。

NLA 認証を使用するには、Windows アプリケーションオブジェクトの「拡張ネットワークセキュリティー」(--enhancednetworksecurity) 属性を構成します。

「拡張ネットワークセキュリティー」は、Windows アプリケーションではデフォルトで有効になっています。この属性が無効になっている場合は、アプリケーションサーバーへの認証時に RDP セキュリティーが使用されます。

リモートデスクトップセッションホストに対して NLA の使用を適用できます。たとえば、Windows Server 2008 R2 上では、コンピュータの構成\ポリシー\管理用テンプレート\Windows コンポーネント\リモート デスクトップ サービス\リモート デスクトップ セッション ホスト\セキュリティにあるグループ ポリシー オブジェクトの「リモート接続にネットワーク レベル認証を使用したユーザー認証を必要とする」の設定を有効にします。

SGD がパスワードキャッシュからアプリケーションサーバーのパスワードを提供するように構成されているときに NLA に失敗した場合は、警告メッセージが表示され、ユーザーは Shift キーを使用して起動を再試行するよう求められます。NLA は、SGD 資格情報がリモートデスクトップセッションホストの資格情報に一致していない場合に失敗することがあります。「リモートデスクトップセッションホストがユーザーに入力を求める場合」で説明されているように、Shift キーを押しながらクリックすると、アプリケーションサーバーが強制的に入力を要求します。