我正在从VS 2010在线模板中的WCF REST服务模板40(CS)创建一个站点.它工作得很好,但我需要保护它.
我需要支持Windows,Linux和iPhone应用程序,所以REST + oAuth似乎是一个很好的解决方案,但我不知道从哪里开始.
基本上我需要像传统的表单auth一样将用户名/密码(当然是哈希)解析到我的数据库.
OAuth不传输用户名/密码.OAuth在HTTP Auth标头内发送OAuth标头.您的服务需要将其拉出来,然后对其进行测试以确保其有效.
OAuth标头中会包含一堆未加密的值(timestamp,consumer_key,nonce).您可以使用这些未加密的值并使用未加密的密钥来查找服务将用于加密这些相同值的密钥,并确保它与OAuth标头中也包含的签名相匹配.如果生成的签名与OAuth标头中包含的签名匹配,那么您就知道HTTP请求是好的.然后,您可以从标头中取出使用者密钥,并在需要时使用它来查找用户名.
在这里看我的帖子.请记住,有几个好的库可以让所有这些变得更容易,比如DotNetOpenAuth.