使用Cookie或替代方法通过WFC / JSON保护数据会话

时间:2012-02-18 23:48:48

标签: c# json wcf wcf-security setcookie

我现在已经搜索了大约5个小时,这是通过WCF“保护”数据会话/登录会话的最佳方法。

一些事实:

  • WCF代码位于C#中,将在线托管供所有人使用(API)
  • 将有一个单独的网站使用API​​作为用户的GUI
  • 它也将被iPhone,Android和我能想到的任何其他东西消耗
  • 数据将使用JSON
  • 发送
  • 最重要的是:API将通过SSL访问

选项1 -

我一直在使用cookie来保护对API系统的访问。我知道一种简单的方法,但粗略的是提交请求,好像它是来自浏览器的HTTP请求并使用表单身份验证。我宁愿只使用JSON和Cookies来做这件事 - 假设我沿着这条路走下去。

选项2 -

关于Cookies的说法。我想到了另一种方法来实现这一点,也许它也是一种更安全的方式?我想通过JSON传递一个身份验证(自定义类)对象以及每个调用所需的对象。在此身份验证对象中,将有两个或更多成员:

  1. SessionID:这是一个存储在API数据库中的GUID
  2. HashValue:可能是MD5 Hash,我还没有决定,每次通话都会更新
  3. 在每次成功调用API时更新HashValue的想法是,客户端的本地存储的身份验证对象将被更改,以便不会执行任何欺骗。至少我相信这一点,也许我错了?

    注意:此值将在服务器端生成,存储在数据库中并传回客户端。

    我不确定要走哪条路。如果选项2是更好的方式,那么我就去。

    只有选项1是最好的,那么我的问题是我实际上找不到如何在API端的WCF服务中设置cookie。有什么指针吗?

    感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

使用表单身份验证的优势在于,您不必担心拥有安全/加密专业人员的专业知识。您可以使用已经强化的方式来安全地管理会话。此外,坚持使用HTTP协议会限制防火墙的问题,因为大多数地方允许传出端口80和443流量。

您的选项2基本上与使用更改哈希的表单身份验证做同样的事情。通常具有更改值(散列值或不可预测值)称为随机数,并与OAuth一起使用。

考虑OAuth支持,因为它是独立于平台的,并且还有已经编写过的库。

但如果是我和我正在使用C#和WCF,我会坚持使用Forms Authentication并将我的努力投入到我特别专业知识的API中的实际逻辑中。