我正在尝试使用SessionAuthenticationModule创建令牌并将其写入Cookie而不是使用旧的FormAuthentication.SetAuthCookie。这样我也可以向我的委托人添加索赔,并在每次请求时提供索赔。.NET 4.5 SessionAuthenticationModule
它可以在我自己的计算机上正常工作,但是当我部署到服务器时,出现此错误: 指定的参数超出了有效值的范围。参数名:keyExpirationTime
来源:System.IdentityModel 堆栈跟踪pointsto重载构造之一 - 它似乎已经从我原来的呼叫走过的TokenHandler,然后通过一对夫妇的构造函数来CreateSessionSecurityToken。
My 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下运行。
CreateSessionSecurityToken从sessionauthennticationmodule添加了声明后执行的页面调用。
这一定是相当简单的事情,但我需要帮助搞清楚它是什么!真的很感谢一些帮助。
感谢 菲尔
谢谢 - 由于某种原因,我没有收到回复发送到我的电子邮件,所以只看到了这一点。事实证明,我工作了,但你是对的,UtcNow为我工作 – user2047485 2013-03-15 11:03:23
说了这么多,null似乎不适用于ValidTo参数。我是否需要SessionSecurityToken DefaultTokenLifetime的一些配置设置? – user2047485 2013-03-15 11:42:29