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

本文关键字:JSON 保护 数据 会话 WFC Cookie 其他 方法 使用 | 更新日期: 2023-09-27 18:25:08

我已经搜索了大约5个小时,寻找通过WCF"保护"数据会话/登录会话的最佳方法。

一些事实:

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

选项1-

我一直在尝试使用cookie来保护对API系统的访问。我知道一个简单但粗糙的方法是,将请求当作来自浏览器的HTTP请求来提交,并使用表单验证。我更喜欢只使用JSON和Cookie来完成这项工作——假设我走的是这条路。

选项2-

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

  1. SessionID:这将是存储在API数据库中的GUID
  2. HashValue:可能是MD5哈希,我还没有决定,每次调用都会更新

在每次成功调用API时更新HashValue的想法是为了更改客户端本地存储的身份验证对象,这样就不会进行欺骗。至少我相信这一点,也许我错了?

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

我不确定该走哪条路。如果选择2会是一个更好的方式,那么我离开。

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

谢谢你的帮助。

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

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

选项2本质上是用一个不断变化的散列来做与Forms Authentication相同的事情。通常,具有变化的值(哈希值或不可预测值)被称为nonce,并与OAuth一起使用。

考虑一下对OAuth的支持,因为它是独立于平台的,而且已经为此编写了库。

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