OWIN中的OnValidateIdentity未调用Cookie身份验证

时间:2017-11-30 13:24:40

标签: asp.net owin-security

我正在使用OWIN cookie身份验证中间件并设置了一个自定义OnValidateIdentity - 方法,应该在所有需要进行身份验证的请求上调用该方法。

我的设置如下:

        app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = "my-cookie",
            Provider = new CookieAuthenticationProvider()
            {
                OnValidateIdentity = async ctx =>
                {
                    // my own validation code
                }
            }
        }

我遇到的问题是,对于某些请求,不会调用OnValidateIdentity。如果我多次访问同一个受保护的Web API控制器,某些请求将不会调用OnValidateIdentity - 方法。

当我需要使用GetOwinContext().Authentication.User且未填充ClaimsPrincipal时,这会导致处理后期出现问题。

这可能是什么原因?

1 个答案:

答案 0 :(得分:1)

发现了这个问题。 Cookie已过期。

这是因为我还使用OpenIdConnect - 使用相同cookie的中间件。事实证明,如果您未在该配置中指定UseTokenLifetime = false,则会将ID令牌的到期时间视为Cookie到期。