防止在WCF中的用户之间共享登录凭据

时间:2012-06-20 18:51:55

标签: wcf security authentication azure

我在Azure中的工作者角色中托管了一项服务。客户端通过NetTcp绑定连接使用证书进行共同客户端/服务身份验证以及自定义用户名密码验证。

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

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

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

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

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

感谢。

1 个答案:

答案 0 :(得分:1)

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

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

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