1

我在 Azure 的 Worker Role 中托管了一项服务。客户端使用用于相互客户端/服务身份验证的证书和自定义用户名密码验证通过 NetTcp 绑定进行连接。

客户端还接收使用共享机密身份验证通过 Azure 服务总线广播的事件通知。

我希望这是安全的,并且不允许一个人与朋友或其他任何人共享他/她的登录信息 - 他们的登录仅供他们使用。类似地,忘记在一台机器上注销然后从另一台机器(即平板电脑、工作计算机等)登录到服务的用户应该触发未注销的应用程序的自动关闭。

我正在使用按呼叫服务,并且使用会话实现解决方案需要大量重新布线。

我想我需要在用户进行操作调用时跟踪用户的上下文,并跟踪哪些 IP 当前正在使用该登录名/凭据。我希望能够进行某种“死亡接触”,当检测到多个登录时,服务可以向客户端发送终止命令。

任何处理此问题的模式的建议或指针将不胜感激。

谢谢。

4

1 回答 1

1

即使您确实使用了 PerSession,您仍然需要确定同一用户是否在多个会话中,并且您有会话的开销。

我只在 WSHttpBinding 上对此进行了测试,而不是托管在 Azure 角色中,所以如果它不适用于 NetTcp Azure 角色,请不要投反对票 - 评论,我将删除它。即使使用 PerCall,SessionID 也是持久的,并且 SessionID 在客户端和服务器上都可用。多个用户可以拥有相同的 IP 地址,但 SessionID 对会话来说是唯一的。显然,您需要记录用户 ID、会话 ID,但表存储很便宜。

也许更新许可证模型以供并发使用。通过记录 userID 和 sessionID,您可以编写一个算法来计算最大并发使用量。

于 2012-06-20T19:43:33.317 回答