【问题标题】:OnValidateIdentity disables the MVC OWIN remember me optionOnValidateIdentity 禁用 MVC OWIN 记住我选项
【发布时间】:2014-08-12 16:52:06
【问题描述】:

当我通过安全标记激活 OWIN logout-everywhere 功能并将CookieAuthenticationProvider 的OnValidateIdentity-Callback 与SecurityStampValidator-class 一起使用时,用户每次关闭浏览器时都会注销。

provider.OnValidateIdentity =
    SecurityStampValidator.OnValidateIdentity<MyUserManager, MyUser>(
        System.TimeSpan.FromSeconds(10),(manager, user) => {
            return user.GenerateUserIdentityAsync(manager);                                                       
        });

但是,当我自己在OnValidateIdentity-callback 中进行管道检查(查找和比较安全标记、拒绝或更新身份)时,一切似乎都正常。

这是一个已知的错误,还是我在这里错过了什么?或者有没有关于CookieAuthenticationProvider 和OnValidateIdentity 使用的好文档?
用谷歌挖掘只向我展示了一些简单的示例,但没有提供进一步的见解。

其他信息

  • 我使用自己的 UserStorage 实现来保存所有 数据库中的数据
  • 我注意到每个页面请求都会调用两次 UserStorage 的 GetSecurityStampAsync,当我使用我的 实现,只完成一次调用。
  • 安装的 Identity 版本是 2.0.1

【问题讨论】:

    标签: asp.net-mvc-5 asp.net-identity owin


    【解决方案1】:

    这基本上是一个错误,cookie 的重新生成应该尊重 cookie 上当前的“记住我”选项。作为一种解决方法,您可以复制 OnValidateIdentity 代码并输入当前上下文属性以使 Persistent 模式通过:

    context.OwinContext.Authentication.SignIn(context.Properties, identity);
    

    【讨论】:

      【解决方案2】:

      这已在 ASP.NET Identity 2.2 中解决。见https://aspnetidentity.codeplex.com/workitem/2319

      【讨论】:

        【解决方案3】:

        我在SecurityStampValidator.OnValidateIdentity的反汇编中发现了如下代码:

        // .. some other code
        // ...
        ClaimsIdentity claimsIdentity = await regenerateIdentityCallback(userManager, tUser);
        if (claimsIdentity != null){
        context.get_OwinContext().get_Authentication().SignIn(new ClaimsIdentity[]
            {
               claimsIdentity
            });
        }
        

        在我看来,SignIn-操作不完整,应该设置记住我选项吗?因此我假设 SecurityStampValidator 的实现是错误的。

        【讨论】:

        • 我的研究和调试表明添加了“Ispersistent”作为对用户身份的声明。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-09-15
        • 1970-01-01
        • 2011-01-28
        • 2022-12-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多