首页 文章

OWIN身份验证和“在线用户”

提问于
浏览
1

我有一个项目使用集中的ASP.NET MVC网站,该网站正在实现OWIN ASP.NET身份体系结构 . 我们的集中网站已被用于:

  • 使用用户名/密码授予令牌

  • grant刷新令牌

  • 添加/删除和修改用户/角色和声明

  • 通过OAuthentication和社交登录(Twitter,Facebook ...)授予令牌

到目前为止很好,但现在我得到了一个新的要求 . 在我看来,该层应该能够“跟踪在线用户”这是不可能的,因为ASP.NET身份OAuth授予令牌和刷新令牌,但它没有“会话”和“在线认证用户”的任何概念 .

关于如何实现此功能的任何想法或建议?

1 回答

  • 0

    这取决于您对跟踪在线用户的确切定义,但假设对其有一个宽松的定义,您可以通过准确介绍您所说的还没有的内容来实现这一目标;会话 .

    在身份验证方面,您的ASP.NET MVC应用程序充当身份提供者/授权服务器(IP / AS),但这并不意味着它不能或不应该具有会话的概念 . 通常,会话是IP / AS中的常见做法,因为这样它们可以为依赖它们的应用程序提供单点登录 .

    例如,Google和Facebook都充当其他应用程序的IP / AS,并且它们都维护会话 . 你可以说,在这两种情况下,他们所做的远不止仅仅是作为IP / AS,所以 Session 是必须的 .

    但是,仅关注身份验证和授权服务的提供程序也依赖于会话 . 例如,我之前提到过Auth0 uses sessions as a way to provide the single sign-on experience .

    By introducing sessions you should be able to maintain a list of online/authenticated users from the perspective of the IP/AS . 最大的问题是,如果确实是您的业务用户在跟踪在线用户时所需要的话 .

    Disclosure :我是Auth0工程师 .


    Update

    关于会话的实际实现,它取决于要求,但客户端cookie和服务器端持久存储的传统方法应该可行 . 它不需要与ASP.NET Identity集成,您只需要跟踪给定的用户身份(通过其用户唯一标识符)具有活动会话;在进行身份验证时完成 .

    然后就是决定会话何时结束的问题,那就是主要依赖于确切要求的部分 . 它可以很简单,如果您想从另一个应用程序中触发单点注销,用户也会转到IP / AS注销或更棘手 .

    关于令牌,您还可以考虑在会话结束时撤消刷新令牌(注销) . 总之,有很多可移动的部件和要实现的东西 .

    如果您还没有这样做,您还应该检查:

相关问题