この強制的なパスワード変更により、認証プロセスはさらに安全になります。たとえば、だれかがあなたのユーザー ID ファイルとそのパスワードを入手したら、その人はその ID のコピーを使って自由にサーバーにアクセスできます。しかし、パスワード・チェックを有効にすることにより、被害者が正規の ID ファイルのパスワードを変更すれば、サーバーはその変更を知ることになります。その結果、盗まれた ID ファイルを使ってアクセスしようとする人は、サーバーにアクセスするのを拒否されることになります。
ユーザーが自分の ID を使ってサーバーにアクセスしようとするとき、まずサーバーで証明書認証が行われます。それから、ノーツ・クライアントは、サーバーのパスワード・チェックが有効になっているかを確認し、有効ならば、ユーザーのユーザー文書でもパスワード・チェックが有効になっているかを確認します。上で説明したステップを追ってきたなら、どちらも有効になっています。
この例では、パスワード・チェックが要求されてから最初の認証なので、ノーツ・クライアントは未解決の Adminp 要求を発見し、猶予期間、変更期間をユーザーのユーザー文書から ID ファイルへ移します。一度これが受け入れられると、クライアントは、ユーザー文書が更新されるように、システム管理要求データベースに新しい変更要求を作成します。この要求は、ユーザー ID が猶予期間と変更期間の情報を受け取ったことを確認し、最終変更日である今日の日付とともに ID ファイルからの現在のパスワード・ダイジェストを含んでいます。
クライアントにおける有効期限のチェック
これまで見てきたとおり、ノーツ・クライアントは、ユーザーが実際にログインする以前からユーザーに関する情報をたくさんもっています。これらの ID ファイルにあるパラメーターは、クライアントでイベントを発生させる引き金として使われたり、パスワード・チェックのサイクルのどの段階にいるかに応じて、ユーザーに対する警告メッセージを表示するために使われたりしています。
NOTES.INI ファイルは、現在クライアントが使用している ID ファイル名およびユーザー ID が最後に使われた日付を決めるための変数 CertificateExpChecked を含んでいます。ノーツがロードすると、この設定値を確認し、CertificateExpChecked の設定に列挙されている日付が今日よりも前であれば、ノーツは ID ファイルに有効期限内の証明書があるかを確認するためにその ID ファイルを調べます。そして、必要ならパスワードが期限切れかもしれないことをユーザーに警告します。期限切れの判定は次の式によって行われます。
有効期限 =(最終変更日 + 変更期間)
IF(有効期限 - 今日の日付)<(変更期間の 25%)
THEN 警告を表示
このメッセージは、 IF 文が真である間、パスワード変更期間が過ぎるまで毎日1回現れます。(このメッセージはドミノ サーバーに接続しなくても現れることに注意してください。クライアントは必要な情報をすべてユーザー ID ファイル内にもっているので、ユーザーのユーザー文書を読む必要はないのです。)
23/05/2001 11:11:21 CN=Mickey User/O=Acme failed to authenticate: Your password expired and your account is locked out; see your system administrator to reset it
また、この時点で、ユーザー文書に保存されているダイジェストは暗号化されているので、ユーザー ID に保存されているものとは違っていることに気をつけてください。これは管理者のために、安全を確保する仕組みです。たとえば、あるユーザーが組織を去ったのに、管理者がそのユーザーをアクセス不可グループに加え忘れた場合、パスワード・チェックが有効である限り、ダイジェストが符合することはないので、そのユーザー ID を使ってもサーバーにはアクセスできなくなります(しかし、これはアクセス不可 ACL グループの代わりとして利用できるものではありません。)
まず、管理者はパスワード・ダイジェストをユーザー文書から削除します。ユーザーが次にサーバーにログオンする時にも、まだアクセスを拒否されます。これは、ユーザー ID ファイルがまだ有効期限の切れた日付を保存しているからです。ユーザーは、ユーザー ID ファイル内のパスワードを変更しなければなりません。これによりユーザー ID ファイル内のパスワード・ダイジェストが更新されます。そしてユーザー文書内にはダイジェストがないので、行うはずのパスワード・ダイジェスト・チェックがなく、ユーザーはアクセスできます。最終変更日がユーザー文書の記録より新しい日付になっているので、クライアントは Adminp 要求を出し、サーバーに新しくパスワードが変わったことを通知します。
Adminp がこの変更要求を処理したら、そのユーザーのユーザー文書には、ユーザー ID ファイルと同じパスワード・ダイジェストおよび、最終変更日が書き込まれます。この要求はクライアントからサーバーへの要求なので、ID ファイルを変更する必要はありません。これで、ユーザーはサーバーにアクセスできるようになりました。
これまでに紹介したメッセージの他にも、確実にダイジェストと日付を同期させるためにサーバーが行う確認がいくつかあります。たとえば、クライアントがサーバーにユーザー ID のダイジェストを送ったときに、サーバーの時間より進んだ日付が記載されていたら、クライアントのオペレーティング・システムの時計に何か問題があるに違いありません。この状況では、クライアントに「時間の同期とパスワードの変更間隔の問題で接続に失敗しました。時刻の設定を確認しパスワードを変更するか、システム管理者に問い合わせてください。」というメッセージが表示されます。
クライアント側の警告はユーザーがサーバーへアクセスする前におきるので、そのような警告は、サーバー文書でパスワード・チェックを無効にしてもなくなりません。しかし、無効にしたことにより、パスワードが期限切れになっていても、そのユーザー ID でサーバーへアクセスし続けられるようになります。警告メッセージを消すために、ユーザーは ID に保存されている最終変更日、猶予期間、有効期限にしたがってパスワードを変更していくべきです。
筆者について
マーク・コーナイアは、 1997 年からロータスで働いています。マークは、特に難しい顧客問題をあつかう World Wide Support Engineering Team のメンバーです。イングランドを拠点に、彼のオンサイト・サポートのターゲットは、近くはロンドンから、遠くはニュー・ジーランドまで広がっていました。ロータスに来る前は、マークは英国国防省でイギリス空軍のハーキュリー輸送機 C-130 "Cloud Busters" で無線とレーダー担当のクルーのチーフを務めていました。仕事以外では、ディズニー・グッズをオークションで買ってコレクションしたり、自宅を補修したり、シンプソンズを見たりするのが好きです。