与WIF RTM奇怪的错误,出现重置IIS后
-
22-09-2019 - |
题
我托管Windows Server 2008上我的Web应用程序与IIS 7.5, 我有2个Web应用程序: 1.第一个是核心的SSO登录页面(单点登录)服务。 2.另一个web应用托管其使用第一应用程序为SSO相同的Web服务器上。
我使用的WIF RTM对实施SSO,
通常,它运行良好,没有任何问题,用户可以登录扔SSO和重定向回起始页。 但是当我登录扔SSO,然后再重新启动IIS,如果我回来的第二个应用程序,并刷新页面,我得到了以下错误:
在/应用程序的服务器错误。 键不适于在指定状态下使用。 说明:未处理 期间发生的异常 在当前web请求的执行。 有关详情,请堆栈跟踪 有关该错误以及信息 它起源于代码。
异常详细信息: System.Security.Cryptography.CryptographicException: 键不适于在指定使用 状态。
源错误:未处理的异常 的执行过程中生成 当前Web请求。信息 关于原因和发生位置 除了可以使用识别 异常堆栈跟踪如下。
堆栈跟踪:
[CryptographicException:密钥无效 在指定状态下使用。 ]点击 System.Security.Cryptography.ProtectedData.Unprotect(字节[] 的EncryptedData,字节[] optionalEntropy, DataProtectionScope范围)+425结果 Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(字节[] 编码)59
[InvalidOperationException异常:ID1073:甲 CryptographicException发生时 尝试使用解密的cookie 所述ProtectedData API(见内 例外详细信息)。如果你是 使用IIS 7.5,这可能是由于 在该loadUserProfile设置 应用程序池被设置为false。 ] Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Decode(字节[] 编码)+151结果 Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ApplyTransforms(字节[] 饼干,布尔出站)+109结果 Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(的XmlReader 读者,SecurityTokenResolver tokenResolver)634结果 Microsoft.IdentityModel.Tokens.SessionSecurityTokenHandler.ReadToken(字节[] 令牌,SecurityTokenResolver tokenResolver)+105结果 Microsoft.IdentityModel.Web.SessionAuthenticationModule.ReadSessionTokenFromCookie(字节[] sessionCookie)239结果 Microsoft.IdentityModel.Web.SessionAuthenticationModule.TryReadSessionTokenFromCookie(SessionSecurityToken& sessionToken)+59结果 Microsoft.IdentityModel.Web.SessionAuthenticationModule.OnAuthenticateRequest(对象 发件人,EventArgs EventArgs的)+52结果 System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 System.Web.HttpApplication.ExecuteStep(IExecutionStep 步骤,布尔逻辑completedSynchronously) 75
________________________________________版本信息:微软.NET Framework版本:2.0.50727.4927; ASP.NET版本:2.0.50727.4927
用户会话通过使用SQLServer的会话模式,我使用此特殊的数据库中的存储。
我已经尝试了很多,我不能重新程序这个问题我的本地计算机(Windows7的)上。 有没有人有类似的经历?你能告诉我怎么解决这个问题呢?
解决方案
这很可能是因为您的应用程序池用户没有持续的用户配置文件。为了改善这种情况,你可以运行一些为用户:
runas /user:<domain>\<user> cmd
和这将创建配置文件。随后,数据应重新启动IIS之后解密。
其他提示
我终于通过改变解决这一问题的应用程序池用户到本地用户。 可能是由SSO导致的问题是在64位操作系统托管,如果我的主机32位计算机上的SSO这个问题不存在(甚至我使用的应用程序池域用户)。
现在我用ApplicationPoolIdentity或网络服务,该异常消失我重新启动IIS之后。
感谢所有你们这些家伙,我很高兴与大家分享我的解决方案。
有似乎是某种安全问题,当你有几个应用程序与IIS 7.5
共享同一个域赢Server 2008上如果您有网址http://ourdomain.com/app1
和http://ourdomain.com/app2
你可以在一个应用程序使用WIF的迹象,但,当你访问其他应用程序,你得到这个错误。这是因为,曲奇是域,但如果由APP1创建it's然后APP2不能访问它。
因此,解决方案是做为亚伦和使用具有访问权限的特定用户或者作为我们所做的,在两个不同的结构域分开的应用程序,即http://app1domain.com/
和http://app2domain.com/
。