WebSurfer's Home

トップ > Blog 1   |   ログイン
APMLフィルター

SQL Server Express 用 Profiler

by WebSurfer 2011年8月8日 23:26

SQL Server を利用したアプリケーションの開発時に、アプリケーションから SQL Server にどのようなクエリが発行されているかを確認したいことがあると思います。

SQL Server Standard Edition 以上には SQL Server Profiler というツールが付属していて、GUI 環境で SQL Server のインスタンスで発生するイベントを収集して表示させることができるそうです。

しかし、残念ながら Express Edition には SQL Server Profiler は付属していません。

ググって調べてみると、AnjLab というロシアのソフト会社が無償で提供している SQL Server 2005/2008 Express Profiler というツールを見つけましたので使ってみました。

インストールは、上記のサイトからダウロードした zip ファイルに SqlExpressProfiler.msi という Windows インストーラーパッケージが含まれているので、それを実行するだけです。

設定方法が書いてあるドキュメントが見つからず、正しいかどうかイマイチ不安ですが、以下のように設定しました。なお、SQL Server は 2008 Express Edition で、開発マシンにローカルにインストールしてあります。認証方式は Windows 認証です。

(1) メニューバーで File --> New Trace を選択。表示される Trace Properties ダイアログの General タブで以下のように設定します。

SQL Profiler の Trace Properties ダイアログの General タブ設定

(2) Events タブの設定がよく分かりませんでしたが、開発中のアプリケーションから実行されるクエリの内容を確認したい場合は、SQLStmtStarting と SPStmtStarting にチェックを入れればよさそうです。

SQL Profiler の Trace Properties ダイアログの Events タブ設定

(3) Trace Properties ダイアログの Run ボタンをクリックするとダイアログが閉じて、トレース状況が表示されます。下の画像は、先の記事 SQL キャッシュ依存関係 で紹介したアプリケーションが、SQL Server にポーリングをかけているところです。

SQL Profiler のトレース状況

というわけで、アプリケーションが発行したクエリを確認するだけにしか使っていませんが、その目的であれば問題なく使えました。

Tags:

DevelopmentTools

Forms 認証チケットの受渡しに URI を使用

by WebSurfer 2011年8月6日 14:59

今回は URI に認証チケットを追加して送る場合の Forms 認証のログインとログアウト動作について調べてみました。クッキーを使用した場合については、先の記事 Forms 認証のログイン・ログオフ動作 を参照してください。

認証チケットの入れ物に URI を使った場合の Forms 認証のログイン・ログオフ動作

web.config で authentication の forms 要素 の cookieless 属性を AutoDetect に設定し、Firefox 5 で「サイトから送られてきた Cookie を保存する」のチェックを外してテストしました。

URI を使用する場合の問題は、上の画像に示したように、ブラウザのアドレスバーに認証チケットが表示されるので、認証チケットが一般ユーザーの目に直接さらられてしまうことです。というわけで、できればクッキーのみを使うようにしたほうが無難だと思われます。

***** ログイン *****

  1. 匿名アクセスが許可されているページ default.aspx で、ログインしていない状態から LoginStatus をクリックする。
  2. JavaScrip が起動してポストバック(default.aspx への POST 要求)がかかる。
  3. サーバーからリダイレクト指示(HTTP/1.1 302 Found)が返ってくる。応答ヘッダーに含まれる Location(リダイレクト先)は web.config で指定したログインページ login.aspx となる。
  4. ブラウザはリダイレクト先のページ login.aspx を GET 要求する。・・・ここまではクッキーを使った場合と同じ。
  5. 再び、サーバーからリダイレクト指示(HTTP/1.1 302 Found)が返ってくる。応答ヘッダーに含まれる Location は同じく login.aspx だが、クエリ文字列に AspxAutoDetectCookieSupport=1 が追加されている。
  6. 再び、ブラウザはリダイレクト先のページ login.aspx を GET 要求する。前回の要求の時と違うのは、クエリ文字列に AspxAutoDetectCookieSupport=1 が追加されていること。
  7. サーバーから応答(login.aspx)が返ってくる。
  8. ユーザーが ID とパスワードを入力して[ログイン]ボタンをクリックする。
  9. [ログイン]ボタンのクリックで login.aspx にポストバックがかかる。ただし、form 要素の action 属性に (X(1))/ が追加されているので、POST 先は login.aspx ではなく (X(1))/login.aspx となる。クエリ文字列 にも AspxAutoDetectCookieSupport=1 が追加されている。
  10. サーバーからリダイレクト指示(HTTP/1.1 302 Found)が返ってくる。応答ヘッダーに含まれる Location は (X(1)F(mfZdwXpqsmZ ... 2Qg2g1))/default.aspx となり、mfZdwXpqsmZ ... 2Qg2g1 という認証チケットが追加されている。
  11. リダイレクト指示を受けて、ブラウザは (X(1)F(mfZdwXpqsmZ ... 2Qg2g1))/default.aspx を GET 要求する。
  12. サーバーから応答(default.aspx)が返ってくる。認証チケットが URI に含まれているのでユーザーは認証済みとなる。

***** ログアウト *****

  1. ログインしている状態のページ (X(1)F(mfZdwXpqsmZ ... 2Qg2g1))/default.aspx で LoginStatus をクリック。
  2. JavaScrip でポストバックがかかる。
  3. サーバーからリダイレクト指示(HTTP/1.1 302 Found)が返ってくる。Location は (X(1))/default.aspx となる。この時、URI から認証チケットは削除されている。
  4. ブラウザは (X(1))/default.aspx を GET 要求する。
  5. サーバーから応答 (X(1))/default.aspx が返ってくる(ログアウトした後も URI に (X(1)) は含まれる)。ユーザーはログアウト状態となる。

Tags: ,

Authentication

Forms 認証のログイン・ログオフ動作

by WebSurfer 2011年8月3日 22:14

Froms 認証のログイン・ログオフ動作

認証クッキーを使用した場合における Forms 認証のログインとログアウト動作で、サーバーとクライアントのやり取りがどのように行われているか調べてみましたので、備忘録として書いておきます。

ログアウト操作で、認証クッキーを削除するため、ポストバックして同じページにリダイレクトをかけていることと、ロール名クッキーの追加と削除が認証クッキーより 1 ステップ遅れるのが新しい発見でした。

認証クッキーを使用せず、代わりに URL に認証チケットを追加して送るケースではどうなっているかは別途調べる予定です。

***** ログイン *****

  1. 匿名アクセスが許可されているあるページ(ここでは default.aspx とする)において、ログインしていない状態から LoginStatus をクリックする。
  2. JavaScrip が起動してポストバック(default.aspx への POST 要求)がかかる。この時、サーバーに送信される隠しフィールド __EVENTTARGET に LoginStatus の UniqueID が設定される(これにより、サーバーはログイン要求であると認識するらしい)。
  3. サーバーからリダイレクト指示(HTTP/1.1 302 Found)が返ってくる。応答ヘッダーに含まれる Location(リダイレクト先)は web.config で指定されたログインページ(ここでは login.aspx とする)となる。
  4. リダイレクト指示を受けて、ブラウザは login.aspx を GET 要求する。
  5. サーバーから応答(login.aspx)が返ってくる。
  6. ユーザーが ID とパスワードを入力して[ログイン]ボタンをクリックする。
  7. [ログイン]ボタンのクリックで login.aspx にポストバックがかかる。
  8. サーバーからリダイレクト指示(HTTP/1.1 302 Found)が返ってくる。応答ヘッダーに含まれる Location は default.aspx となる。この時、サーバーからの応答ヘッダーには認証クッキーが含まれる。(この時点ではロール名クッキーは送られないので注意)
  9. リダイレクト指示を受けて、ブラウザは default.aspx を GET 要求する。この時、上のステップで受信した認証クッキーを要求ヘッダーに含める。
  10. サーバーから応答(default.aspx)が返ってくる。認証クッキーが要求ヘッダーに含まれているので、ユーザーは認証済みとなる。(この時点で応答ヘッダーにロール名クッキーが含まれて送られてくる)

***** ログアウト *****

  1. あるページ(default.aspx とする)で、ログインしている状態から LoginStatus をクリック。
  2. JavaScrip でポストバック(default.aspx への POST 要求)がかかる。この時、サーバーに送信される隠しフィールド __EVENTTARGET には LoginStatus の UniqueID が設定される(これにより、サーバーはログアウト要求であると認識するらしい)。
  3. サーバーからリダイレクト指示(HTTP/1.1 302 Found)が返ってくる。ただし、リダイレクト先は同一ページ(Location は default.aspx)となる。この時、認証クッキーを削除するため、応答ヘッダの Set-Cookie は、認証クッキーを空にして、expires を過去の日時に設定している。
  4. ブラウザは default.aspx を GET 要求する。この前のステップの、応答ヘッダの Set-Cookie の設定により、認証クッキーは要求ヘッダーには含まれなくなる。(ただし、ロール名クッキーはこの時点ではまだ要求ヘッダーに含まれている)
  5. サーバーから応答 (default.aspx) が返ってくる。ユーザーはログアウト状態となる。この時、ロール名クッキーを削除するため、応答ヘッダの Set-Cookie で、ロール名クッキーを空にして、expires を過去の日時に設定している。

なお、Windows 認証の場合は、先の記事 Windows 認証でのロール に示した Windows OS の認証ダイアログを使います。従って、Web ページにはログイン画面は実装できませんし、ログイン操作も Forms 認証とは異なります。

また、ログアウトについても、Windows 認証の場合は一旦ログインしたユーザー情報はブラウザを閉じるまで保持され続けるので、Forms 認証とは異なり、Web ページにログオフ機能は実装できません。

Tags:

Authentication

About this blog

2010年5月にこのブログを立ち上げました。主に ASP.NET Web アプリ関係の記事です。

Calendar

<<  2024年3月  >>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

View posts in large calendar