DominoをASP.NETに移植する(5)

DominoのASP.NETお手軽移行計画(いつの間にか「お手軽」が付いているのは気にしない)の5回目は、ユーザ認証だ。
いちばんかんたんなのは、ActiveDirectoryに登録されているユーザ名とパスワードで基本認証させる方法だ。社内の安全なネットワークなら、この方法で十分だろう。
IIS 6.0を稼動させているWindowsサーバが、すでにWindowsドメインに参加していれば、IISの設定で、「既存のWebサイト」の「ディレクトリ セキュリティ」タブの「認証とアクセス制御」の「編集」ボタンをクリックする。
そして、匿名アクセスは有効のままでもよいが、「認証済みアクセス」欄で、「統合Windows認証」と「基本認証」にチェックマークを入れればよい。
あとは、開発するASP.NET 2.0アプリケーションのweb.configファイルに、下記のように記述するだけだ。
<authentication mode=”Windows” />
<authorization>
<deny users=”?” />
</authorization>
denyタグの「?」は匿名ユーザという意味なので、このように記述すれば、IIS側で匿名アクセスを有効にしてあっても、匿名アクセスが拒否される。
また、プログラム内では「HttpContext.Current.User.Identity.Name」で、ログインしたユーザ名を取得できる。
このようにしておけば、開発したASP.NET 2.0アプリケーションの任意のページを開こうとすると、ユーザ名とパスワードを入力するダイアログが表示される。ActiveDirectoryの(つまりパソコンにログインするときの)ユーザ名とパスワードを入力すれば、ログインできる。
また、Internet Explorerのセキュリティ設定の「ユーザー認証」の項目を「イントラネットゾーンでのみ自動的にログオンする」に設定し、「イントラネット」ゾーンの「サイト」設定で、「ほかのゾーンにないローカル(イントラネット)のサイトをすべて含める」や「プロキシ サーバを使用しないサイトをすべて含める」が選択されていれば、自動ログオンも可能だ。
以上のように、ASP.NET 2.0のユーザ認証をActive Directoryに統合した上で、シングルサインオンが実現できる。Notes/Dominoの場合、Active DirectoryとDomino Directoryを、サードバーティ製のツールで同期をとるか、手作業で両方のディレクトリにユーザ登録する必要があるので、ユーザ管理の簡素化という意味ではASP.NET 2.0に移行した方が、運用が効率化される。
Notes/Dominoを利用しても、Webアプリケーションの場合は、いずれにせよIDファイルによる物理的なセキュリティの確保は不可能だ。しかもDomino Directory上でIDファイルのパスワードと、Webアプリ用の「インターネットパスワード」を別管理する必要がある。
したがって、Webアプリが前提なら、ユーザ管理をActive Directoryに統合した上で、Active Directoryのポリシーを使って、パスワード期限を短くするとか、パスワードの複雑性を高くするなどの方法でセキュリティを高める方が、運用は効率的になる。
もう完全にNotes/Dominoを裏切った筆致になってしまっている。お許し頂きたい。10年来のNotes/Dominoとの付き合いで、かなり後ろめたさはあるが、DominoのWebアプリ開発では純正のカレンダーコントロールさえ存在しないという限界があるのだから、致し方ない。