【发布时间】:2013-02-19 22:07:07
【问题描述】:
我正在尝试使用 SessionAuthenticationModule 创建令牌并将其写入 cookie,而不是使用旧的 FormAuthentication.SetAuthCookie。这样我也可以向我的委托人添加声明,并在每次请求时都可以使用它们。
它在我自己的计算机上运行良好,但是当我部署到服务器时出现此错误: 指定的参数超出了有效值的范围。参数名称:keyExpirationTime
来源:System.IdentityModel Stack Trace 指向一个重载的构造函数——它似乎是从我最初通过 TokenHandler 调用 CreateSessionSecurityToken 开始,然后通过几个构造函数。
我的 SessionAuthenticationModule 是我自己编写的一个类,但派生自 System.IdentityModel.Services.SessionAuthenticationModule 并覆盖 OnPostAuthenticateRequest。
我正在为 validFrom 和 validTo 参数发送 DateTime.Now 和 DateTime.Now.AddMinutes(20)(在单独的说明中,这可以是配置设置吗?如果可以的话在哪里? - 显然我可以设置一个 AppSetting几分钟,但大概在某处有安全配置设置?)
我已搜索此错误消息,但找不到任何提及。
我使用过 FederationAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken 并且也尝试过 HttpContext.Current.ApplicationInstance.Modules("SessionAuthenticationModule") - 两者都可以在我的开发机器上工作,但在服务器上都不能工作。
服务器有 Windows 2008 R2,我有 Windows 7 Professional。两者都有 IIS 7.5.7600.16385。两者都使用 dotNetFx45_Full_setup.exe v4.5.50709.17929 安装了 .NET 4.5。 为了进行测试,我只是在默认网站下使用了一个虚拟应用程序,该应用程序使用了一个带有集成管道的 64 位应用程序池,并且两个应用程序池都在 AppPoolIdentity 下运行。
从在 sessionauthennticationmodule 添加声明后执行的页面调用 CreateSessionSecurityToken。
这肯定是相当简单的事情,但我需要帮助弄清楚它是什么!非常感谢您的帮助。
谢谢 菲尔
【问题讨论】:
标签: .net .net-4.5 wif claims-based-identity asp.net-4.5