.NET 4.5 SessionAuthenticationModule

时间:2013-03-05 13:23:58

标签: .net .net-4.5 wif claims-based-identity asp.net-4.5

我正在尝试使用SessionAuthenticationModule来创建令牌并将其写入cookie而不是使用旧的FormAuthentication.SetAuthCookie。这样我也可以向我的委托人添加索赔,并在每次请求时提供索赔。

它在我自己的计算机上工作正常,但当我部署到服务器时,我收到此错误: 指定的参数超出了有效值的范围。参数名称:keyExpirationTime

来源:System.IdentityModel Stack Trace指向其中一个重载的构造函数 - 它似乎已经从我原来的调用通过TokenHandler进入CreateSessionSecurityToken,然后通过几个构造函数。

我的SessionAuthenticationModule是我自己编写的类,但派生自System.IdentityModel.Services.SessionAuthenticationModule并覆盖OnPostAuthenticateRequest。

我在DateTime.Now和DateTime.Now.AddMinutes(20)中发送validFrom和validTo参数(在单独的说明中,这可以是配置设置,如果是这样的话 - 显然我可以设置AppSetting分钟,但可能在某处有安全配置设置?)

我搜索过此错误消息,但找不到任何提及。

我使用了FederationAuthentication.SessionAuthenticationModule.CreateSessionSecurityToken,并且还尝试了HttpContext.Current.ApplicationInstance.Modules(“SessionAuthenticationModule”) - 两者都可以在我的开发机器上运行,但都不能在服务器上运行。

服务器有Windows 2008 R2,我有Windows 7专业版。两者都有IIS 7.5.7600.16385。两者都使用dotNetFx45_Full_setup.exe v4.5.50709.17929安装了.NET 4.5。 为了进行测试,我只使用默认网站下的虚拟应用程序,它使用带有集成管道的64位应用程序池,并且两个应用程序池都在AppPoolIdentity下运行。

从sessionauthennticationmodule添加声明后执行的页面调用CreateSessionSecurityToken。

它必定是相当简单的东西,但我需要帮助弄清楚它是什么!真的很感激一些帮助。

感谢 菲尔

1 个答案:

答案 0 :(得分:3)

所有样本都说“Use DateTime.UtcNow”,你能试试吗?您还可以将null粘贴到ValidTo,以指定应通过将SessionSecurityTokenHandler.DefaultTokenLifetime属性的值添加到validFrom参数指定的时间来确定该值。