2016-04-06 13 views
0

example.comにDNNサイトがあり、subdomain.example.comにMVCサイトがあります。この記事ではMembershipProviderRoleProviderを設定しました:SharePoint-Forms-Based-Authentication-Using-DotNet今、私は2つのサイト間で認証クッキーを共有したいと思います。私はdomain=".example.com"のようなweb.configファイルにドメインキーを設定しました。 Fiddlerは、いずれかのサイトにリクエストするときに同じCookieが使用されると述べています。そして、次のような効果があります。サイトの1つにログインすると、別のサイトからログオフされています。私は何を逃したでしょうか?以下はDNNサイトとASP.NETサイトの間で認証Cookieを共有する

はMVCサイトのweb.configの一部です:あなたは、この動作を確認すると

<machineKey 
    validationKey="DEE8F9D31F46D663FA0BCF9A6A9701B0796777C5" 
    decryptionKey="E75FBCF55F6BB0B2A352036B965725FD739B2EB21B790659" 
    decryption="3DES" 
    validation="SHA1" /> 
<authentication mode="Forms"> 
    <forms 
    name=".DOTNETNUKE" 
    protection="All" 
    timeout="60" 
    cookieless="UseCookies" 
    loginUrl="~/Account/Login" 
    domain=".example.com" 
    path="/" /> 
</authentication> 
<httpCookies httpOnlyCookies="true" requireSSL="false" domain=".example.com" /> 
<!-- Configure the Sql Membership Provider --> 
<membership defaultProvider="SqlMembershipProvider" userIsOnlineTimeWindow="15"> 
    <providers> 
    <clear /> 
    <add 
     name="SqlMembershipProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="DnnSqlServer" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="false" 
     minRequiredPasswordLength="7" 
     minRequiredNonalphanumericCharacters="0" 
     requiresUniqueEmail="false" 
     passwordFormat="Hashed" 
     applicationName="DotNetNuke" /> 
    </providers> 
</membership> 
<!-- Configure the Sql Role Provider --> 
<roleManager enabled="true" defaultProvider="SqlRoleProvider"> 
    <providers> 
    <clear/> 
    <add 
     name="SqlRoleProvider" 
     connectionStringName="DnnSqlServer" 
     applicationName="DotNetNuke" 
     type="System.Web.Security.SqlRoleProvider,System.Web, 
      Version=2.0.0.0,Culture=neutral, 
      PublicKeyToken=b03f5f7f11d50a3a" /> 
    </providers> 
</roleManager> 
+0

最後に私はstackoverflowページの解決策を見つけました:[http://stackoverflow.com/a/21087932/4703971](http://stackoverflow.com/a/21087932/4703971) – niebohr

答えて

0

それは通常、暗号化のmachineKey値は、異なるアプリケーション間で異なっているからです。他のアプリケーションがCookieの読み取りを試みると、そのCookieを復号化してから削除することができず、ログインすることができます。

私はweb.configのこれらの項目を検証します。 (それらはノードからあまり遠く離れていません。

+0

マシンキーが同じではない場合、「偽造トークンを復号化できませんでした」というエラーが発生したので、これを既にチェックしました。私のweb.configを更新しました答えに。 – niebohr

関連する問題