我现在已经搜索了大约5个小时,这是通过WCF“保护”数据会话/登录会话的最佳方法。
一些事实:
选项1 -
我一直在使用cookie来保护对API系统的访问。我知道一种简单的方法,但粗略的是提交请求,好像它是来自浏览器的HTTP请求并使用表单身份验证。我宁愿只使用JSON和Cookies来做这件事 - 假设我沿着这条路走下去。
选项2 -
关于Cookies的说法。我想到了另一种方法来实现这一点,也许它也是一种更安全的方式?我想通过JSON传递一个身份验证(自定义类)对象以及每个调用所需的对象。在此身份验证对象中,将有两个或更多成员:
在每次成功调用API时更新HashValue的想法是,客户端的本地存储的身份验证对象将被更改,以便不会执行任何欺骗。至少我相信这一点,也许我错了?
注意:此值将在服务器端生成,存储在数据库中并传回客户端。
我不确定要走哪条路。如果选项2是更好的方式,那么我就去。
只有选项1是最好的,那么我的问题是我实际上找不到如何在API端的WCF服务中设置cookie。有什么指针吗?
感谢您的帮助。
答案 0 :(得分:1)
使用表单身份验证的优势在于,您不必担心拥有安全/加密专业人员的专业知识。您可以使用已经强化的方式来安全地管理会话。此外,坚持使用HTTP协议会限制防火墙的问题,因为大多数地方允许传出端口80和443流量。
您的选项2基本上与使用更改哈希的表单身份验证做同样的事情。通常具有更改值(散列值或不可预测值)称为随机数,并与OAuth一起使用。
考虑OAuth支持,因为它是独立于平台的,并且还有已经编写过的库。
但如果是我和我正在使用C#和WCF,我会坚持使用Forms Authentication并将我的努力投入到我特别专业知识的API中的实际逻辑中。