Owin WS-Federation设置令牌滑动到期

时间:2015-02-20 10:45:05

标签: owin katana ws-federation sts-securitytokenservice

有人可以解释如何使用新的 Owin WS-Federation 插件实现滑动过期吗?

在客户端,在WS-Fedeartion 配置,我发现有一些事件,如:

  Notifications = new WsFederationAuthenticationNotifications
            {
                SecurityTokenReceived = ...,
                AuthenticationFailed = ...,
                RedirectToIdentityProvider = ...,
                MessageReceived = ...,
                SecurityTokenValidated = ....
            },

但是因为缺乏文档我无法弄清楚它是怎么回事?

目前我的 STS正在发出绝对过期的令牌

 protected override Lifetime GetTokenLifetime(Lifetime requestLifetime)
 {
        // 5 Minutes for token lifetime
        var lifetime = new Lifetime(DateTime.UtcNow, DateTime.UtcNow.AddMinutes(5));
        return lifetime;
 }

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:14)

TL; DR:WsFederationAuthenticationOptions.UseTokenLifetime设置为false,以重新启用滑动过期

在OWIN / Katana中,滑动到期概念仅限于 Cookie中间件,默认情况下启用(您可以通过设置CookieAuthenticationOptions.SlidingExpiration将其关闭到falsehttps://katanaproject.codeplex.com/SourceControl/latest#src/Microsoft.Owin.Security.Cookies/CookieAuthenticationOptions.cs)。

当您使用app.UseWsFederationAuthentication(或app.UseOpenIdConnectAuthentication)时,它实际上依赖于另一个中间件来在您完成身份验证流程时保留ClaimsIdentity。这个"持久性授权"可以通过SignInAsAuthenticationTypeapp.SetDefaultSignInAsAuthenticationType配置。

通常,此SignInAsAuthenticationType属性对应于cookie中间件:这样,滑动到期不在WS-Federation中间件级别进行管理,而是由cookie中间件管理,这将在滑动到期时自动续订身份验证cookie条件得到满足。在这种情况下,您的身份提供商发布的身份验证令牌不会续订。为此,您需要将WsFederationAuthenticationOptions.UseTokenLifetime设置为false,因为当您使用默认值时,将禁用滑动过期,并且Cookie生命周期与令牌生存期匹配。

如果您使用WS-Fed进行身份验证(即您只想知道您的用户是谁),使用滑动过期可能是一个好主意。但是,如果您需要在远程服务器上进行一些API调用,那么您的用户可能会在安全令牌到期后很长时间内进行身份验证。