- PR -

IISへのログインユーザーについて

1
投稿者投稿内容
ふにゃ
会議室デビュー日: 2004/12/17
投稿数: 7
投稿日時: 2004-12-17 15:35
はじめまして基本的な質問で恐縮ですが、
小生、ActiveDirectory環境下で社内イントラでのWebアプリケーションを作成しているものです。
以下の環境でIISへのログインについて質問があります。

----------------------環境-----------------------
サーバー構成
OS: Win2000 Server SP4(Active Directory構築済みで唯一のサーバー)
IPAddress: 192.168.1.1
IIS: Ver 5.1
DNS: 192.168.1.1
Domain名: TESTDOMAIN.local
Computer名: SERVER1.TESTDOMAIN.local

・DNSサーバーは前方・逆引きともに下記クライアント・自分自身ともに解決済み
・ActiveDirectoryのユーザーとコンピューターにてTESTUSER1@TESTDOMAIN.local(所属するグループはDomain Users)を追加
・IISのディレクトリーセキュリティーはWindows統合環境
・IISのアプリケーションルートディレクトリーは ./LOGINTEST
・そのスタートアップページは ./LOGINTEST/main.aspx (このファイルの中でRequest.ServerVariablesの全てのKeyを列挙)

クライアント
OS: WinXP Ver2002 SP1 Professional
IPAddress: 192.168.1.2
DNS: 192.168.1.1
Computer名: CLIENT1.TESTDOMAIN.local
IE: Ver 6.0
・Administrator権限を付与したローカルユーザーTESTUSER1とTESTUSER2を追加
--------------------------------------------------
ここで
1、Client側からTESTUSER2でローカルログイン後、IEでhttp://SERVER1/LOGINTEST/main.aspxを表示

Request.ServerVariablesの"LOGON_USER"には何も入っておりません。

また
2、Client側からTESTUSER1でネットワークログイン後は

Request.ServerVariablesの"LOGON_USER"には"TESTDOMAIN/TESTUSER1"が入っています。

ということは
3、Client側からTESTUSER1でローカルログイン後は
"LOGON_USER"には何も入っていないとおもいきや"TESTDOMAIN/TESTUSER1"が入っています。

社内イントラなので匿名アクセスは許可させますが、それは"LOGON_USER"の中身をみれば制御できます。
しかしドメインユーザー名とローカルユーザー名が一緒の場合は一度ネットワークにログインしてから使用させたいと思っています。
そうなると、リクエスト側のユーザーがローカルユーザーかドメインユーザーか判断できなくなると思います。
ローカルログインしているにもかかわらずIISはドメインユーザーと判断しているんでしょうか?

そもそもWebサーバーだからHttpを使用してのログインユーザー管理は別物と考えたほうがよいのでしょうか?
いげ太
常連さん
会議室デビュー日: 2004/10/27
投稿数: 32
投稿日時: 2004-12-20 11:16
IIS のヘルプには
> 統合 Windows 認証では、クライアント コンピュータ上にある
> 最新の Windows ユーザー情報が使用されます。
とあります。

ここを理解すれば自ずと問題解決できるのではないでしょうか。


ドメイン管理はよく分かりませんが、そもそも
ドメインユーザー名とローカルユーザー名が一緒の場合がある
というのがあまりよろしくないのでは?


【引用部】
iishelp より
[管理] - [サーバーの管理] - [セキュリティ] - [認証] - [認証について] から
[統合 Windows 認証] の項目を参照

MS サイト上にも同様の情報あり
ふにゃ
会議室デビュー日: 2004/12/17
投稿数: 7
投稿日時: 2004-12-20 17:35
いげ太様書き込みありがとうございます。

仰るとおりです。
運用側で管理してもらう必要がありそうです。

Webアプリケーション側では、
Request.ServerVariablesの値と.NETが提供しているセキュリティークラス
(詳しくはまだ調べてないのでわかりませんが・・・、あるとおもわれますので)
を使用して匿名ユーザーか、ドメインユーザーかを判断させるようにします。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2004-12-21 08:36
1、CLIENT1\TESTUSER2でログイン→LOGON_USER=(null)
2、TESTDOMAIN\TESTUSER1でログイン→LOGON_USER="TESTDOMAIN/TESTUSER1"
3、CLIENT1\TESTUSER1でログイン→LOGON_USER="TESTDOMAIN/TESTUSER1"

CLIENT1\TESTUSER1と、TESTDOMAIN\TESTUSER1のパスワードが同一で、
3の場合、暗黙的にTESTDOMAINに認証しているのでは?
ふにゃ
会議室デビュー日: 2004/12/17
投稿数: 7
投稿日時: 2004-12-21 11:42
なな様書き込みありがとうございます。

実験しました。

IISの匿名アクセス許可がキーとなるようです。

以下実験結果

・IIS匿名アクセス許可

ドメインユーザーなしでローカルユーザーあり
ローカルログイン: NULL
ドメインログイン: 不可

ドメインユーザーありでローカルユーザーなし
ローカルログイン: 不可
ドメインログイン: NULL

ドメインユーザー(=パスワードB)ありでローカルユーザー(=パスワードA)あり[パスワードが違う]
パスワードAのローカルログイン: NULL
パスワードAのドメインログイン: 不可
パスワードBのローカルログイン: 不可
パスワードBのドメインログイン: NULL

ドメインユーザーありでローカルユーザーあり[パスワードも同じ]
ローカルログイン: NULL
ドメインログイン: NULL

・IIS匿名アクセス不許可

ドメインユーザーなしでローカルユーザーあり
ローカルログイン: 認証用ダイアログ出現
ドメインログイン: 不可

ドメインユーザーありでローカルユーザーなし
ローカルログイン: 不可
ドメインログイン: ドメインユーザーとして認識

ドメインユーザー(=パスワードB)ありでローカルユーザー(=パスワードA)あり[パスワードが違う]
パスワードAのローカルログイン: 認証用ダイアログ出現
パスワードAのドメインログイン: 不可
パスワードBのローカルログイン: 不可
パスワードBのドメインログイン: ドメインユーザーとして認識

ドメインユーザーありでローカルユーザーあり[パスワードも同じ]
ローカルログイン: ドメインユーザーとして認識
ドメインログイン: ドメインユーザーとして認識

どうやら、匿名アクセスを許可するとIUSR_マシーン名がログインユーザーとして
使用されるようです。ファイル単位で設定できるようなのでなんとかなりそうです。
ただ、匿名ユーザーかドメインユーザーかの識別は必要なのでいずれにしろ
認証ダイアログへのユーザーの入力作業は発生してしまうと思われます。
なな
ぬし
会議室デビュー日: 2003/06/22
投稿数: 659
お住まい・勤務地: 愛知県
投稿日時: 2004-12-21 13:02
数点、確認させてください。

Q1.NULLや不可は、どのような状況のことを表しているのでしょうか?
Q2.どのような設定・動作が希望なのでしょうか?

# 下記のとおりと思っていますが...
# ・匿名アクセスは不許可
# ・ドメインユーザでログオンしている場合は、ポップアップなしで認証
# ・ローカルユーザでログオンしている場合は、ポップアップありで認証
# ・認証したユーザ名を、Webアプリケーションで取得したい
ふにゃ
会議室デビュー日: 2004/12/17
投稿数: 7
投稿日時: 2004-12-21 15:25
はい。

Q1について
NULLとは前述のRequest.ServerVariablesの"LOGON_USER"の中身を指します。
不可とはローカル又はドメインログインできないとういことを指します。

Q2について
背景:現状はネットワークといってもワークグループ管理されているだけの
もので各Webアプリケーションは各自のDBのUser情報を基に業務の権限等を
付与しています。つまり、ログイン画面でユーザー名とパスワードを入力後
DBへ問い合わせをしてその権限によってビジネスルールに沿った制御をさせています。

要求:客先の指針によりActiveDirectoryを導入することでユーザーの一元管理
をさせたいということ

影響:それにともないDBの変更はもちろんのこと、ログイン時、ログイン後の
ユーザーの認証がWebアプリ側でも必要になり現在調査をしているところです。

># 下記のとおりと思っていますが...
># ・匿名アクセスは不許可
># ・ドメインユーザでログオンしている場合は、ポップアップなしで認証
># ・ローカルユーザでログオンしている場合は、ポップアップありで認証
># ・認証したユーザ名を、Webアプリケーションで取得したい

当初は匿名アクセスは許可を希望しておりました。あとは仰せの通りです。
Webサーバーは匿名を許可してしまえば誰であろうと匿名ユーザーでログイン
させるんだということを自分ではこの件で理解しました。(間違っていればご指摘ください。)
なので現在では匿名アクセスは不許可で実装させるつもりです。
1

スキルアップ/キャリアアップ(JOB@IT)