今回はInternet Explorerの「ゾーン」と統合認証についての話です。

IEのゾーンとは

IEの「ゾーン」とはセキュリティを高めるためにある仕組みで、信頼できるサイトでは、色々なことを許可し、信頼できないサイトでは極力できることを絞る・・・ということを自動的に行ってくれる仕組みです。

IEを立ち上げて、ウインドウ右下の「ゾーン」を確認してみましょう。以下はIE7でYahoo! Japanを表示したところですが、「インターネットゾーン」として認識されています。

image

このようにインターネット上のサイトは「インターネットゾーン」にあるものとして扱われ、できることを比較的絞った状態になっています。例えば未署名のActiveXコントロールはダウンロードできません。

ゾーンとしては以下の種類があります。

- インターネット
- ローカルイントラネット
- 信頼済みサイト
- 制限つきサイト

ぞれぞれのゾーンのレベルのカスタマイズ(できること、できないことを設定すること)は「ツール」→「インターネットオプション」→「セキュリティ」タブから行えます。

image

image

IEのシングルサインオン

で、このゾーンの設定の中にシングルサインオンの設定があり、ゾーンの判定とあいまってなかなかわかりづらい挙動をしてくれます。今回はそこをお伝えしたいのです。

良くあるのが、Active Directory環境下で

- IISでWebサイトを構築していてWindows統合認証に設定しているのに、アクセスするとIDとパスワードを求められてしまう
- でも、IDとパスワードを求められないケース(端末、ユーザー)もある

という問題です。

これは実は、セキュリティレベルの設定と、ゾーンの判定によって起こされています。

まず重要なのはそれぞれのゾーンにある、「ユーザー認証」の設定です。

image

規定の状態では、どのゾーンに関しても「イントラネットゾーンでのみ自動的にログオンする」という設定になっています。

なので、

- イントラネットゾーンであればWindows統合認証を使って、ドメインにログオンしているユーザーならそのIDで自動的にWebサイトにログオンする
- イントラネットゾーン以外のゾーンではIDとパスワードを聞かれる

という挙動になります。

どのサイトがどのゾーンに含まれるのか

では、どのサイトがどのゾーンに含まれるのでしょうか?それは以下のようなルールになっています。

- 信頼済みサイト

- 明示的にユーザーがアドレスを追加したサイト。

- 制限付きサイト

- 明示的にユーザーがアドレスを追加したサイト。

- ローカルイントラネット

- 自動判定。
- 明示的にユーザーがアドレスを追加することもできる。

- インターネット

- 信頼済みサイト、制限付きサイトに含まれておらず、ローカルイントラネットと、自動判定されなかったサイト。

つまり、ローカルイントラネットの自動判定ロジックが肝になります。

ローカルイントラネットの判定基準

今回の話の一番重要なところです。ローカルイントラネットの判定基準は、規定の状態では

- URLに.(ドット)が含まれるかどうか

が判断基準になっています。URLに.(ドット)が含まれればそれはローカルイントラネットではなく、URLに.(ドット)が含まれなければそれはローカルイントラネットなのです。

この判断ロジックは「イントラネットに繋がらない」 - ドメインサフィックス&Proxy編でもIEがProxyを使うか使わないかを判断するロジックとして登場しました。

つまり

- ローカルイントラネットであれば全てWindowsサーバーであり、全てADに参加している(だろう)
- 全てADに参加しているということは、全て同じDNSサフィックス(だろう)
- ホスト名のみ記述しても、TCP/IPの規定の設定で規定のDNSサフィックスが追加される(だろう)

というような(適当な)推論のもと、ローカルイントラネットかどうかを判定しているものだと思われます。

というわけで、マルチドメインの場合や、FQDNでURLが記述されたリンクからたどった場合などは、規定の状態で「インターネットゾーン」と判定されてしまい、ID、パスワードが聞かれてしまう・・・と言うわけです。

問題回避策

回避策としては、

- http://hostname/の形でアクセスする
- イントラネットゾーンに明示的にhttp://hostname.fqdn/の形のアドレスを登録する

のいずれかが良いでしょう。信頼済みゾーンにもID、パスワードを送るような設定にしてしまった上で、該当URLを信頼済みゾーンに入れても動きますが、他の信頼済みゾーンにもID、パスワードを送ってしまうことになるので、セキュリティ上望ましくないと思います。