サーバの設定

サーバ全体の設定について説明しておこう。

サーバ文書で設定する。

セッション認証の設定

ビジネス用アプリなら、ユーザー認証はセッション認証一択だと思っていい。

セッション認証にするには、サーバ文書→インターネットプロトコル→Domino Web Engineと進み、セッション認証を「単一サーバ」に設定する。
セッション認証の設定

同時にセッションの有効期限を設定しておこう。XPagesの場合、ユーザーが何の操作もしなくなってからこの時間が経過するとセッションタイムアウトとなる。

ファイルサイズ設定

アップロード可能な最大ファイルサイズの設定。サーバ全体では多めに設定しておき、各アプリケーションで絞るという使い方がいいと思う。
ファイルサイズ設定

names.nsfのアクセス制限

names.nsfのビューにWebアクセスされちゃうと、ユーザー名の一覧が流出してしまう。 ただ、names.nsfの場合、ビューだけでも数十あるので、先ほど紹介したビューごとにWebアクセス時に開くXPageを設定するのは無理。

そのため、http://serverName/names.nsf/People/ などのURLアクセスをじゃましないといけない。

names.nsf自体のプロパティでURLアクセスを禁止してしまえば、上記のようなアクセスを禁止できる。
names.nsfへのアクセス制限

ただ、ひとつ副作用があって、ユーザー文書の[HTTPPasswordForceChange]を'1'に設定しても強制パスワード変更画面に移動させられない。 通常、[HTTPPasswordForceChange]を'1'に設定しておくと、そのユーザーがログオンした時点で"name.nsf?ChangePassword"というURLに移動させられて、パスワード変更画面 がひらくようになっている。今回、names.nsfのURLアクセスを禁止してしまったため、その仕組みが使えないのだ。

そのため、自分でパスワード変更用のXPageをつくり、パスワード変更はその画面で行うようにしないといけない。

以下のコードはnames.nsfのユーザー文書にフラグをチェックして、パスワード変更画面に移動するためのもの。

  function check_passwordForceChange() {
    var pwChangeFlag = @DbLookup([database.getServer(), "names.nsf"], "UserNameTo", @UserName(), "HTTPPassword強制変更");
    if (pwChangeFlag != "") {
      facesContext.getExternalContext().redirect("/MyPage.nsf/passwordChange.xsp");
    }
  }