[WinXP] FIM 2010 セルフ サービス パスワード リセット クライアントは他のカスタム GINA を使うアプリケーションと共存できない

みなさんごきげんよう。ういこです。
今日は Windows XP における FIM 2010 セルフ サービス パスワード リセット クライアントとほかにカスタム GINA を使うアプリケーションは共存できないというお話しです。なお、Windows Vista 以降は GINA モデルではないので、複数の認証プロバイダを登録することができます。

カスタム GINA って何?二つ以上登録できるの?
さて、いきなりタイトルにもある "カスタム GINA" とは何かですが、これはすごく簡単にいうと OS にログオンする際に Ctrl + Alt + Del でダイアログ ボックスを表示させる仕組みです。ただし、この仕組みは Windows XP までであり、Windows Vista 以降の OS では後述の認証プロバイダと呼ばれる機構に変わっています。

image image

図 : WinXP の GINA (こっちは既定) と Windows 7 の認証プロバイダ

この仕組みを行うモジュールを GINA (ジーナ、Graphical Identification and Authentication の略) といいます。
GINA はマイクロソフト以外のサードパーティのアプリケーションでも拡張することができます。このカスタマイズされた GINA を「カスタム GINA」と言います。この言葉は、サポート技術情報でもよく使われているのを見ますね。カスタム GINA は所定のレジストリにモジュール名を登録することで有効になります。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\

この値は OS の初期インストール状態では表示されません。
この状態の OS 内部では、Msgina.dll が既定の GINA モジュールと見なされます。カスタム GINA を使うサードパーティ製品は、このwinlogonキーを修正してGinaDll値を追加します。

FIM のセルフ パスワード リセットも、GINA や Vista 以降であれば認証プロバイダを拡張してカスタマイズすることで、ログオンしてない状態なのに AD にアクセスして自分のアカウントのパスワードをリセットすることができるようにしています。つまり、カスタム GINA を使うということです。

では、FIM 2010 セルフ サービス パスワード リセットを入れたいクライアントに、さらにカスタム GINA を使うアプリケーションを入れる必要がある場合はどうなるか。残念ながら、カスタム GINA は一つしか登録できません。よって、FIM 2010 セルフ サービス パスワード リセットを入れるか、もう一つのカスタム GINA を使うアプリケーションを入れるかどちらのプログラムを入れるかあらかじめ選択頂かなくてはいけないということになります。
これは、Windows XP までの Windows OS の設計に起因する制限事項であり、FIM 2010 セルフ サービス パスワード リセットに限定された話ではありません。

Windows Vista 以降は複数設定できる (認証プロバイダ)
Windows Vista / Windows 7 以降のクライアントの場合は GINA に代わる新しい資格情報プロバイダ (CredentialProvider) の仕組みに変更されています。ログオン時は Logonui.exe というプロセスが起動され、以下のレジストリ キーを参照します。

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\Currentversion\Authentication\Credential Providers

Logonui は、複数の CredentialProvider を同時にホストすることができます。そのため、資格情報をログイン時に操作するようなアプリケーションを複数必要とする要件のシステムの場合は Windows Vista / Windows 7 に移行いただくことで対応可能になる可能性があります。ただし、CredentialProvider の作りによっては複数動作が出来ない場合がありますので、実際に構成検証いただくことをお勧めいたします。

カスタム GINA を使うアプリケーションと FIM 2010 セルフ サービス パスワード リセットを一緒に入れたらどうなるか
上記の制限事項のため、影響を受ける可能性のあるシナリオとしては以下のようなものがあります。
※実際には、各アプリケーションの導入の設計はそれぞれ違うので、実際の結果はそれぞれ異なるものになる可能性があります。

・FIM コンポーネントをインストールした後にカスタム GINA アプリケーションをインストールした場合
FIM パスワード リセット機能をログオン画面で使えなくなる可能性があります。

・FIM コンポーネントをインストールする前にカスタム GINA アプリケーションが既にインストールされている場合
別のカスタム GINA アプリケーションがログオン画面で使えなくなります。

アンインストールをする際も注意が必要
FIM コンポーネントの導入については、他の GINA が事前に導入されていることは運用シナリオ上想定していないため、上述の GINA 登録先レジストリに自身のデータを書き込み、上書きします。 FIM モジュールによって上書きされたレジストリは、FIM モジュールをアンインストールする際、削除対象になります。あらかじめレジストリ キーを保持し、書き換えるような動作を行うことはありませんので、事前に入っていたカスタム GINA の登録が戻ることはありません。カスタム GINA 登録キーを削除してしまうことによって、既定のログオンダイアログに戻ってしまいます。

-- カスタム GINA 登録レジストリを削除する動作は既定の動作
アンインストール時は、自身が導入したコンポーネントおよびレジストリ情報を削除対象とするため、上書きした上記レジストリを削除するアクションがとられます。 これは、カスタム GINA が環境から削除されているにもかかわらず当該レジストリが残存することによってログオン動作に支障がでる可能性を排除することを目的としたアクションです。

また、FIM クライアント プラグインを導入する際、インストール時のカスタム動作でレジストリ存在チェックを実施し、存在した場合はバックアップを取るという動作をしない理由としては、仮にそうしたアクションを取りますと、今度は以下のようなシナリオで問題を生じる可能性があるためです。

<問題となりうるシナリオ>
1. カスタム GINA を導入
2. FIM プラグイン導入、レジストリをバックアップ
3. 上記 1. のカスタム GINA をアンインストール
4. FIM プラグインをアンインストール
5. すでに存在しない上記 1. のカスタム GINA の情報が残ってしまう
6. ログオンに支障がでる

なお、手動で FIM モジュール導入以前のカスタム GINA 登録レジストリを FIM モジュールの削除後に復旧したとしても、今度は別のカスタム GINA を使うアプリケーションをアンインストールする際に削除対象から外れ、残存してしまう可能性なども懸念されますので、手動でレジストリを書き戻した後にカスタム GINA アプリケーションをアンインストールする際は必ず当該レジストリが削除されているか確認されることをお勧めいたします。

Windows Vista カーネルの内部 : 第 2 部
https://technet.microsoft.com/ja-jp/magazine/2007.03.vistakernel.aspx
⇒ "資格情報プロバイダ" の項をご参照ください。

Windows Vista® および Windows Server® 2008 アプリケーション互換性解説書
https://msdn.microsoft.com/ja-jp/library/aa480152.aspx
⇒ "Microsoft GINA (Graphical Identification and Authentication)" の項をご参照ください。

※ CredentialProvider モデルは Windows Vista / Windows Server 2008 以降 Windows 7 および Windows Server 2008 R2 共通となります。

それではみなさんごきげんよう。

ういこう@全身の蕁麻疹が世界地図のようですね