我有一个使用集中式ASP.NET MVC网站的项目,该网站正在实现OWIN ASP.NET Identity架构。 我们的集中网站已经习惯了:
到目前为止一直很好,但现在我得到了一个新请求。在我看来,该层应该能够“跟踪在线用户”这是不可能的,因为ASP.NET身份OAuth授予令牌和刷新令牌,但它没有“会话”和“在线认证用户”的任何概念
关于如何实现此功能的任何想法或建议?
答案 0 :(得分:0)
这取决于您对跟踪在线用户的确切定义,但假设对其有一个宽松的定义,您可以通过准确介绍您所说的还没有的内容来实现这一目标;会话。
在身份验证方面,您的ASP.NET MVC应用程序充当身份提供者/授权服务器(IP / AS),但这并不意味着它不能或不应该具有会话的概念。通常会话是IP / AS中的常见做法,因为这样他们可以为依赖它们的应用程序提供单点登录。
例如,Google和Facebook都充当其他应用程序的IP / AS,并且它们都维护会话。你可以说,在这两种情况下,他们所做的远远不仅仅是作为IP / AS,所以会议是必须的。
但是,仅关注身份验证和授权服务的提供商也依赖于会话。例如,我之前提到的Auth0 uses sessions as a way to provide the single sign-on experience。
通过引入会话,您应该能够从IP / AS 的角度维护在线/经过身份验证的用户列表。最大的问题是,如果您的业务用户在说跟踪在线用户时确实如此。
披露:我是Auth0工程师。
的更新强>:
关于会话的实际实现,它取决于要求,但客户端cookie和服务器端持久存储的传统方法应该可行。它不需要与ASP.NET Identity集成,您只需跟踪给定的用户身份(通过其用户唯一标识符)具有活动会话;在他们进行身份验证时完成。
然后是确定该会话何时结束的问题,那部分主要取决于确切的要求。它可以很简单,如果您想从另一个应用程序中触发单点注销,用户也会转到IP / AS注销或更棘手。
关于令牌,您还可以考虑在会话结束时撤消刷新令牌(注销)。总之,有很多可移动的部分和要实现的东西。
如果您还没有这样做,您还应该检查: