OWIN 身份验证和"online users"



我有一个使用集中式ASP的项目。asp.net MVC网站,实现了OWIN ASP。. NET身份体系结构。我们的集中式网站已用于:

  • 使用用户名/密码授予令牌
  • 授予刷新令牌
  • 添加/删除和修改用户/角色和声明
  • 通过OAuthentication和Social Login (Twitter, Facebook…)授予令牌

到目前为止还好,但现在我有一个新的请求。该层应该能够"跟踪在线用户",这是不可能的,在我看来,因为ASP。. NET Identity OAuth授予令牌和刷新令牌,但它没有任何"会话"one_answers"在线认证用户"的概念。

关于如何实现这个功能有什么想法或建议吗?

这在一定程度上取决于你对跟踪在线用户的确切定义,但假设一个宽松的定义,你可以通过引入你说你还没有的东西来实现这一点;会话。

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

例如,Google和Facebook都充当其他应用程序的IP/as,并且它们都维护会话。你可能会争辩说,在这两种情况下,它们所做的不仅仅是充当IP/as,所以会话是必须的。

然而,只关注认证和授权服务的提供者也依赖于会话。例如,Auth0使用会话作为提供我前面提到的单点登录体验的一种方式。

通过引入会话,您应该能够从IP/AS的角度维护在线/经过身份验证的用户列表。最大的问题是,当您的业务用户说跟踪在线用户时,这是否确实是他们想要的。

,
披露:我是一个Auth0工程师。


,
:

关于会话的实际实现,这取决于需求,但是客户端cookie和服务器端持久存储的传统方法应该可以解决问题。它不需要与ASP集成。. NET身份,你只需要跟踪一个给定的用户身份(通过它的用户唯一标识符)有一个活动会话;当他们验证时完成。

然后是决定会话何时结束的问题,这部分将主要取决于确切的需求。它可以简单到用户也到IP/as注销,或者更棘手的是,如果您想从另一个应用程序中触发单点注销。

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

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

  • OpenID Connect Core
  • OpenID连接会话管理

最新更新