【问题标题】:.NET 4.5 SessionAuthenticationModule.NET 4.5 会话身份验证模块
【发布时间】: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


    【解决方案1】:

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

    【讨论】:

    • 谢谢 - 由于某种原因,我没有收到回复到我的电子邮件,所以才看到这个。事实证明我解决了这个问题,但你是对的,UtcNow 为我工作
    • 话虽如此,null 似乎不适用于 ValidTo 参数。我需要一些 SessionSecurityToken DefaultTokenLifetime 的配置设置吗?
    猜你喜欢
    • 2018-02-08
    • 2015-03-25
    • 2016-08-20
    • 1970-01-01
    • 2019-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-16
    相关资源
    最近更新 更多