- - PR -
[ASP.NET]1回のフォーム認証で複数の仮想ディレクトリ内のフォームにアクセスしたい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-06-05 03:00
今日は。フォーム認証で困っています。
[やりたいこと] VS.NETで2つのWebアプリケーション(2つのプロジェクト)を作成します。 仮想ディレクトリも2つ出来ます。 ここで作った両方のWebアプリケーション(仮想ディレクトリ)のフォームに、1回のフォーム認証でアクセスしたいのです。 ※複数のシステムにシングルサインオンするイメージです。 後の運用のことを考えて、1システムは1プロジェクトで作りたいです。 [困っていること] それぞれのWebアプリケーションにフォーム認証を実装すれば、一方のWebアプリケーションで認証が済んでいても、もう一方にアクセスすると再度認証を聞いてきます。 1回の認証で両方にアクセスすることができません。 開発環境はASP.NET + VB.NET(VS.NETにて)です。 低レベルな質問かもしれませんが、色々調査しても実現できませんでした。 ご教授の程、よろしくお願い致します。 |
|
投稿日時: 2004-06-07 09:32
似たようなことをやりました。そのときは、
・認証サーバを作る。 ・共通ログインページで、IDとパスワードで認証する。 ・認証OKなら、認証キーを認証サーバに送り、各アプリに認証キーを渡してRedirectする。 ・各アプリは、認証キーで認証サーバに問い合わせる。 ・認証サーバでは、一定時間経過した認証キーは削除する。 というような感じでした。(もっといい方法は私も知りたい) |
|
投稿日時: 2004-06-16 01:31
返答が遅くなり申し訳ありません。
catsさんから教えて頂いた内容を色々調査したのですが、大がかりな仕組みになりそうですね。 私の場合は1システム1Webアプリケーションプロジェクトで作成するのが目的ですので、IISの仮想ディレクトリを複数作成せずに1つの仮想ディレクトリ内に複数のWebアプリケーションプロジェクトを作成する方法に決めました。 マイクロソフトのサポート技術情報を参考にして、メインのWebアプリケーションプロジェクトにフォーム認証を実装し、子Webアプリケーションプロジェクトを複数参加させることによって子Webアプリケーション間で認証を共有することが出来ました。 マイクロソフトのサポート技術情報 http://support.microsoft.com/default.aspx?scid=kb;ja;JP307467 #ちなみに、この方法で作成したメインのWebアプリケーションプロジェクトをVS.NETで開くと「プロジェクトの更新に失敗しました。 フォルダ情報をサーバーから取得できません。」というエラーメッセージが表示されます。動作や開発には問題なさそうですが、少し気になっています。何か情報をお持ちの方がおられましたらご教授の程、よろしくお願い致します。 |
|
投稿日時: 2004-06-16 09:21
もう別の方法でやられているようですが、一応MSDNヘルプから。
アプリケーション間のフォーム認証 system.web - authentication - forms 要素 system.web - machineKey 要素 フォーム認証はただのCookieを使ってやるのでPathをいじれば認証チケットの有効範囲を設定できます。その上で、暗号化/復元に暗号化キー等も一致させればOKなはずです。ただ、Cookieなため、サーバー(ホスト)は超えられません。 [ メッセージ編集済み 編集者: ya 編集日時 2004-06-16 09:22 ] |
|
投稿日時: 2004-06-16 14:10
yaさん情報ありがとうございます!
web.configの設定を変更するだけで、うまくいきました!! サーバーを越えた認証は今のところ想定しなくて良いので、この方法にします。 「authentication - forms 要素」は元々統一していたので、「machineKey 要素」に「validationKey」と「decryptionKey」を追加すると、すんなり、別々のプロジェクトで作成したWebアプリケーション間で認証を共有できました。 (1回認証すれば他のWebアプリケーションでは認証を聞いてこない。) プロジェクトの構成は次の通りにしようと思います。 ※全プロジェクトでweb.configのauthentication-forms要素、machineKey要素設定は統一する ・認証用のWebアプリケーションプロジェクト 各Webアプリケーションの認証や、各システムへリンクするトップメニューとして共通で使用する。 ・各システムのWebアプリケーションプロジェクト 認証のプログラムは含まず、web.configのみ統一する。(loginUrlは認証用のWebアプリケーション内の認証用フォームを指定。) VS.NETで普通にWebアプリケーションプロジェクトを作成し、仮想ディレクトリが作成されるがそのまま利用する。 この方法でいくと、各システムを本番移行する場合もweb.configの記述だけ気を付けていれば良いので助かります。 私が前に投稿した子WebアプリケーションをメインWebアプリケーションに参加させる方法であるとdll等の本番移行が面倒ですし間違いが発生する可能性があるので・・・ |
|
投稿日時: 2004-06-16 15:39
formsとmachineKeyの設定だけで私もできました。
すばらしいです。 |
1