2011-07-05 10 views
0

C#でWebサービス(ASMX)を構築しています。 ASP.netセッションIDを認証のトークンとして使用することを考えています。ASP.net:セッションIDからセッションを手動で初期化することは可能ですか

私はCreateSessionIDで生成されたセッションIDを持っています。これは、認証が成功した後に(Webサービスコールの「ログイン」の戻り値として)クライアントに送信されます。

クライアントは、session-idをパラメータとしてWebサービスコールに送信します。このセッションID文字列からセッションを再作成することはできますか?

ありがとうございます。

答えて

6

このアプローチの問題は、CreateSessionIDが実際にセッションを作成しないことです。名前が示唆するように、固有のセッションIDだけが作成されます。あなたはMSDN documentationを見れば、それは

言うこのメソッドは、アプリケーションコードから と呼ばれることを意図していません。

もう少し読むと、カスタムセッションIDマネージャによってメソッドがオーバーライドされることがわかります。これは、web.configを編集してセッション管理システムに統合することができます。

つまり、現在のCreateSessionIDの使用は、あなたがしたいことをしていません。

実際にWebサービスでセッション状態を使用する場合は、this articleを参照する必要があります。

簡潔には、[WebMethod]属性にEnableSession=trueパラメータを追加する必要があります。その後、Context.Sessionで自動的にセッションにアクセスできます。 IISがあなたのためにすべてを処理するので、これはサービスを介してセッションIDを渡す必要はないことに注意してください。ユーザーが各要求に合格する必要がありますが、それだけでユーザーを検証するために使用されることのトークンを作成するために、(好ましくは、あなたが何か他のものを使用すると思いますが)

あなたはCreateSessionID()メソッドを使用することができます。それに基づいてセッションを再生成することはできませんでした。このルートを使用する場合は、HTTPS経由でサービスにアクセスしていることを確認してください。さもなければ、どんな盗聴者もプレーンテキストでそのトークンを見ることになります(ただしIPアドレス/ユーザエージェントの文字列/ etcをチェックすると軽減できます)。

希望します。

関連する問題