无法解密的权利要求使用网站从.NET 4.5到.NET 3.5(Unable to decrypt

2019-10-30 04:14发布

我一直在试图让下面的情况下,为一个星期左右,现在没有运气的工作。 我有2个应用中,.NET 4.5的应用程序,是使权利要求中,这是工作得很好(与其他.NET 4和向上应用程序一起工作); 和传统局域网系统中使用的WebForms .NET 3.5建成。 遗留应用程序无法升级到.NET的更高版本(会容易得多)。

我希望发生的是,当我登录的.NET 4.5的应用程序,我需要当我访问了.NET 3.5的应用程序进行身份验证。 我已经确保了应用程序之间的Cookie名称是相同的,并且在web.config中的machineKey值是相同的(我用MachineKeySessionSecurityTokenHandler以确保encyrpted cookie值是相同的,即使在一个Web场方案); 然而,什么情况是,当我移动到.NET 3.5的应用我从SymmetricEncryptionFormatter类以下错误:

ID0006:输入字符串参数为null或empty.Parameter名:价值

我曾试图改变的machineKey键(decryptionkey /的validationKey /确认/ decryptiom),以各种不同的组合(确保它们是2点之间是一致的)。 我可以看到相同的cookie,用相同的cookie值是可见的,当我去到2点。 我认为,这个问题可能与.NET 3.5和.NET 4.5(介于Crytographic变化看这里[http://blogs.msdn.com/b/webdev/archive/2012/10/23/cryptographic-improvements-在-ASP净4-5-PT-2.aspx])

没有人有任何想法,可能是什么造成的?

从.NET 4.5应用程序的Web.config关键项:

<system.identityModel>
<identityConfiguration>
<securityTokenHandlers>
<remove type="System.IdentityModel.Tokens.SessionSecurityTokenHandler, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<add type="System.IdentityModel.Services.Tokens.MachineKeySessionSecurityTokenHandler, System.IdentityModel.Services, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />  
</securityTokenHandlers>
</identityConfiguration>
</system.identityModel>

<authentication mode="None" />

<system.identityModel.services>
<federationConfiguration>
<cookieHandler requireSsl="false" name="TestName" />
<wsFederation passiveRedirectEnabled="true" issuer="http://localhost:51318/" realm="http://localhost:57083/" persistentCookiesOnPassiveRedirects="true" requireHttps="false" />
</federationConfiguration>
</system.identityModel.services>

从.NET 3.5应用程序的Web.config关键项:

<authentication mode="None"/>

<machineKey decryptionKey="CC510DF4..." validationKey="BEAC835EEC..." />

<microsoft.identityModel>
<service>
  <securityTokenHandlers>
    <!-- Replace the SessionSecurityTokenHandler with our own. -->
    <remove type="Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
    <add type="MachineKeySessionSecurityTokenHandler, App_Code"/>
  </securityTokenHandlers>
</service>
</microsoft.identityModel>

<microsoft.identityModel.services>
<federationConfiguration>
<wsFederation passiveRedirectEnabled="true" issuer="http://localhost:51318/" realm="http://localhost:57083/" requireHttps="false"/>
<cookieHandler requireSsl="false" name="TestName"/>
</federationConfiguration>
</microsoft.identityModel.services>

Answer 1:

cookie的内部格式已WIF和.NET 4.5之间变化。 你不能在版本之间共享。

颇有点都应用相同的STS,并让每个应用程序使用自己的会话cookie。



文章来源: Unable to decrypt claims cookie from .NET 4.5 to .NET 3.5