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