我正在使用 Windows Identity Foundation (WIF)安全令牌服务(STS)为我的应用程序处理身份验证,该应用程序运行良好。但是,我似乎无法使用 STS 获得任何长时间运行的登录。
据我了解,我不应该关心应用程序级别的客户端令牌,因为它们可以随心所欲地过期,它应该将我重定向到 STS,只要他们仍然登录 STS,它就应该刷新他们的应用程序令牌。然而,它似乎不想让他们保持登录状态。
这是我在 STS 上的 login.aspx 中发生的情况
var cookie = FormsAuthentication.GetAuthCookie(userName, persistTicket);
if (persistTicket)
cookie.Expires = DateTime.Now.AddDays(14);
Response.Cookies.Add(cookie);
var returnUrl = Request.QueryString["ReturnUrl"];
Response.Redirect(returnUrl ?? "default.aspx");
这几乎是直接从使用普通 Forms Auth 的现有应用程序中获取的。
从我的 web.config
<authentication mode="Forms">
<forms loginUrl="Login.aspx" protection="All" timeout="2880"
name=".STS" path="/" requireSSL="false" slidingExpiration="true"
defaultUrl="default.aspx" cookieless="UseDeviceProfile"
enableCrossAppRedirects="false" />
</authentication>
登录后查看 cookie,我可以看到 cookie 上的过期时间设置为未来 14 天,并且 cookie不是会话 cookie。
当我需要重新登录 STS 时,我可以看到我原来的 cookie 仍然存在。
STS 是否有某种时间戳功能嵌入到使我的 cookie 无效的 cookie 中,即使据我所知它应该仍然有效?