1

ドメインmysite.comを持つログインを処理する親MVCサイトがあります。これは基本的に、すぐに使用できるテンプレートMVCインターネットアプリケーションです。ユーザーがログインし、ドメイン.mysite.comで.ASPXAUTHCookieを設定します。

ドメインchild.mysite.comで実行される別のMVCサイトもあります。親が設定したCookieからユーザーを認証するためにカスタムフォーム認証を使用するつもりです。Firefoxでchild.mysite.comにアクセスすると、Firebugのログインサイトによって設定されたCookieが表示されるため、子サイトからアクセスできることはわかっていますが、コードからこのCookieを取得できないようです。子サイトで。

Global.asaxにFormsAuthentication_OnAuthenticateを実装しており、CookieがRequest.Cookiesに表示されることを期待していましたが、Cookieはありません。

FormsAuthentication_OnAuthenticateの親ログインサイトによって設定されたCookieにアクセスするにはどうすればよいですか?

4

1 に答える 1

0

私は問題を見つけたと思います。子サイトはCookieを見つけていましたが、Cookieを復号化しようとするとエラーが発生したため、完全に認証されませんでした。子サイトのこのコードは、次のようにエラーになります。

void FormsAuthentication_OnAuthenticate(Object sender, FormsAuthenticationEventArgs e)
{
    var cookie = FormsAuthentication.Decrypt(Request.Cookies[FormsAuthentication.FormsCookieName].Value);
}

エラーは「パディングが無効で削除できません」であり、子サイトが親サイトによって設定されたCookieを復号化できないためです。

答えは、web.configのsystem.webのマシンキーを両方のサイトで同じになるように設定することです。

<machineKey 
    validationKey='241FF35BE3921690EBA492A89CC03719ECF5552D019448C44F8B28B01F546FCDC4AEDCD273380EB45BE8A49AFB9C14FE60BECF0B5ECBA4901C306875FED98DEA'
decryptionKey='864559FC58AC5FFB5B9581008552B4A873ACBE86469A81CB'
validation='SHA1'/>
于 2013-01-07T12:41:53.487 に答える