1

Webアプリケーション全体のweb.configで設定するのではなく、ユーザーごとに認証Cookieのドメインを設定できる必要があるASP.NETMVCWebアプリがあります。

これが私が現在設定しているものです:

<httpCookies domain=".mydomain.com" />

シナリオ1

ユーザーが最初にサイトにアクセスしたとき、それらはwww.mydomain.comにあります。彼らが私たちのサイトのメインセクションにログインする場合、彼らはwww.mydomain.comにとどまり、ログインは以下を呼び出します:

FormsAuthentication.SetAuthCookie(user.Id + "|" 
                + user.EmailAddress + "|" 
                + user.Role.ToString()
            , true);

...そして、www.mydomain.comが.mydomain.comのCookieドメインと一致するため、Cookieは正しく設定されます。すべて問題ありません。

シナリオ2

ユーザーは、companyname.mydomain.comというサイトの独自のセクションに登録することもできます。このシナリオでは、www.mydomain.comまたはcompanyname.mydomain.comのいずれかからログインすると、Cookieは正常に設定されます。これも、.mydomain.comのCookieドメインと一致します。

シナリオ3(問題)

ただし、ユーザーは自分のドメイン名を私たちのサイトにポイントし、companyname.mydomain.comにアクセスした場合に表示されるものを反映させることができます。たとえば、ドメインcompanyname.comを登録し、そのAレコードをサーバーにポイントしてから、URLをcompanyname.mydomain.comではなくcompanyname.comにすることをサイトで指定するとします。彼らはcompanyname.comにアクセスし、それは私たちのサイトの彼らのセクションのログインページを示しています。今、彼らはログインしようとします、そしてもちろん、companyname.comが.mydomain.comの私たちのクッキードメインと一致しないので、それは機能しません。

web.configでhttpCookiesドメインを完全に設定しないのはなぜですか?その場合、www.mydomain.comにいて、companyname.mydomain.comにログインしようとすると、Cookieがwww.mydomain.com用であるため、失敗します。

このユーザーのリクエストはmydomain.com以外のドメインからのものであるため、このユーザーのFormsAuthenticationCookieのドメインを.mydomain.comではなくドメイン名に設定する必要があります。

何か案は??

4

2 に答える 2

4

セキュリティ上の影響により、使用していないドメインにCookieを設定できないため、このアプローチは機能しないことに気付きました。

代わりに、私が今していることは、ログインを試みてから、リダイレクトする必要のあるドメインが現在使用しているドメインであるかどうかを確認することです。その場合、認証チケットを設定し、安全なセクションにリダイレクトします。リダイレクト先のドメインにいない場合は、currentdomain.com /validateloginからnewdomain.com/validateloginにリダイレクトすると、同じチェックが実行されます。はい、現在のドメインにいます。にリダイレクトするので、認証Cookieを設定してオフにします。

于 2012-09-30T22:09:59.380 に答える
1

これによりGetAuthCookie、認証Cookieを取得し、手動でドメイン名を設定できます。

HttpCookie authcookie = FormsAuthentication.GetAuthCookie(userName, False);
authcookie.Domain = "companyname.mydomain.com";
HttpResponse.AppendCookie(authcookie);
于 2012-09-29T17:41:37.587 に答える