今回はInternet Explorerの「ゾーン」と統合認証についての話です。
IEのゾーンとは
IEの「ゾーン」とはセキュリティを高めるためにある仕組みで、信頼できるサイトでは、色々なことを許可し、信頼できないサイトでは極力できることを絞る・・・ということを自動的に行ってくれる仕組みです。
IEを立ち上げて、ウインドウ右下の「ゾーン」を確認してみましょう。以下はIE7でYahoo! Japanを表示したところですが、「インターネットゾーン」として認識されています。
このようにインターネット上のサイトは「インターネットゾーン」にあるものとして扱われ、できることを比較的絞った状態になっています。例えば未署名のActiveXコントロールはダウンロードできません。
ゾーンとしては以下の種類があります。
- インターネット
- ローカルイントラネット
- 信頼済みサイト
- 制限つきサイト
ぞれぞれのゾーンのレベルのカスタマイズ(できること、できないことを設定すること)は「ツール」→「インターネットオプション」→「セキュリティ」タブから行えます。
IEのシングルサインオン
で、このゾーンの設定の中にシングルサインオンの設定があり、ゾーンの判定とあいまってなかなかわかりづらい挙動をしてくれます。今回はそこをお伝えしたいのです。
良くあるのが、Active Directory環境下で
- IISでWebサイトを構築していてWindows統合認証に設定しているのに、アクセスするとIDとパスワードを求められてしまう
- でも、IDとパスワードを求められないケース(端末、ユーザー)もある
という問題です。
これは実は、セキュリティレベルの設定と、ゾーンの判定によって起こされています。
まず重要なのはそれぞれのゾーンにある、「ユーザー認証」の設定です。
規定の状態では、どのゾーンに関しても「イントラネットゾーンでのみ自動的にログオンする」という設定になっています。
なので、
- イントラネットゾーンであれば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、パスワードを送ってしまうことになるので、セキュリティ上望ましくないと思います。