@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

統合Windows認証後の匿名アクセス可能ページでの動作

1
投稿者投稿内容
Sheile
会議室デビュー日: 2007/09/25
投稿数: 3
投稿日時: 2007-09-25 17:38
お世話になります。
長文になりますが、ご回答頂けると幸いです。

統合Windows認証と匿名アクセス可能なページが混在するWebApplicationを作成しておりますが、
特定の場合にのみ、画面上のForm要素(asp:TextBox, asp:Hidden等)の値がサーバ側に
渡されないという問題が発生しています。
(Application_OnBeginRequestにてRequest.Paramsを全出力して確認。正常動作した場合には
ctl00$ContentBody$search等が存在するが、問題が発生した場合にはこのキーは含まれない)

その為、ボタンを押下したとしてもサーバ側にてbutton_Clickが呼び出されず、
単に再読み込みをしたような動作となってしまっています。


環境としては以下のようになります。

アプリケーションサーバ:Windows 2003 Server + ASP.NET 2.0
データベースサーバ:Windows 2003 Server + Microsoft SQL Server2005

基本的に匿名アクセスを可能としていますが、1ファイルのみ統合Windows認証による
認証を掛けています。


問題が発生する条件は以下の通りになります。
1.統合Windows認証を行うファイル(auth.aspx)から匿名アクセス可能なファイル(normal.aspx)に
 遷移し、normal.aspxにて画面上のテキストボックスに値を入れてボタンを押下した場合。
 (auth.aspxのPage_Loadでnormal.aspxに遷移しています。Response.Redirect,
 Server.Transfer共に問題が発生)

2.両方が匿名アクセス可能、もしくは両方が統合Windows認証であれば正常な動作

3.normal.aspxに直接アクセスした場合には正常動作

4.http://サーバのIP/アプリケーション名/auth.aspxでアクセスした場合には問題が発生し、
 http://サーバ名/アプリケーション名/auth.aspxでアクセスした場合には正常な動作
 ただし、http://完全修飾ドメイン名/アプリケーション名/auth.aspxでアクセスした場合には
 IPで指定した場合と同様の問題が発生します。

現在までの調査結果は以下のようになります。

・アクセス方法によっては正常に動作するため、ロジック部には問題無いかと思っています。

・4番の条件から、セッションクッキーが渡されていないのかとも考えましたが、
 Application_OnBeginRequestにてRequest.Cookiesをログに出力したところ、
 ASP.NET_SessionIdは問題なく渡されているようです。
 また、auth.aspxのPage_LoadにてSessionに保存した値がnormal.aspxのPage_Loadで
 参照できることも確認できました。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-09-25 20:29
1ファイルだけ統合Windows認証による認証をしている、とのことですが、どのようにして
これを実現しているのでしょう。。。
IISでの設定でしょうか?

4番の状況をみると、利用しているのがIEだとすると、サーバ名のときはイントラネットの
セキュリティ、IPおよび完全修飾ドメイン名の場合はインターネットのセキュリティで
動いているのではないかと思われます。
もしかしてこのあたりがいたずらする可能性はないでしょうか。。。

Sheile
会議室デビュー日: 2007/09/25
投稿数: 3
投稿日時: 2007-09-25 21:32
返信ありがとうございます。

引用:

どっとねっとふぁんさんの書き込み (2007-09-25 20:29) より:
1ファイルだけ統合Windows認証による認証をしている、とのことですが、どのようにして
これを実現しているのでしょう。。。
IISでの設定でしょうか?


IISにて、アプリケーション全体を匿名アクセス可能にした後に、auth.aspxのプロパティで
個別に統合Windows認証に指定しています。


引用:

4番の状況をみると、利用しているのがIEだとすると、サーバ名のときはイントラネットの
セキュリティ、IPおよび完全修飾ドメイン名の場合はインターネットのセキュリティで
動いているのではないかと思われます。
もしかしてこのあたりがいたずらする可能性はないでしょうか。。。



確認してみました・・・が、結果は芳しくないようです・・・

1.イントラネットのセキュリティをインターネットと同じ「中」に設定
→http://サーバ名/では正常動作
→http://IPアドレス/では同様の不具合

2.http://IPアドレス/を信頼されたサイトに登録
→変化無し

3.IEオプションのプライバシータブでCookieを全て受け入れるように設定
→変化無し

1番の変更を行うことで同じセキュリティで動作しているとは思うのですが、
結果は変わらないようです。
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2007-09-26 07:07
IEにはプロキシの設定はありませんか?

あとはなんだろう。。。
Sheile
会議室デビュー日: 2007/09/25
投稿数: 3
投稿日時: 2007-09-26 22:24
引用:

どっとねっとふぁんさんの書き込み (2007-09-26 07:07) より:
IEにはプロキシの設定はありませんか?


プロキシの設定は特に行っておらず、直接接続となっています。

前回の投稿後に追加で試した所、以下のような条件がわかりました。
・Page_LoadイベントにおけるResponse.Redirect, Server.Transferで遷移すると問題が発生する(前出の通り)
・Page_Loadイベントでは何もせず、HTMLが表示された後に<A>タグやJavaScriptのlocation.href=normal.aspxに
 よって遷移した場合にも同様の問題が発生する。



また、(無理やりな)解決を見ましたので、以下に記載します。

http://サーバのIP/アプリケーション名/auth.aspxにアクセスし、遷移時は
http://サーバ名/アプリケーション名/normal.aspxに絶対パスでアクセスします。

サーバ名部分の表記を変更(IPとサーバ名、もしくはDNSへ2レコード追加する等)し、絶対パスでアクセスすることで
3番の動作と同じことになり、normal.aspxの機能が正常に動作するようになりました。


最終的には、ユーザから見たときにアクセス先が変化しないように、
 ・pre.aspx = 匿名アクセス & サーバIPでアクセス  auth.aspxへ自動遷移
 ・auth.aspx = 統合Windows認証 & サーバ名でアクセス  normal.aspxへ自動遷移
 ・normal.aspx = 匿名アクセス & サーバIPでアクセス
としました。

こんな無理やり&セッションが切れる方法でも一応は解決方法ということで載せておきます。

調査は続けるつもりですが、そろそろ思考がループしてしまっているので
何かわかりましたら教えて頂けると幸いです。
1

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