我想实现一个REST到一个现有的ASP.NET MVC网站。我已经成功地设置了WCF数据服务,以便浏览我的数据,但现在的问题是如何处理身份验证。
现在,通过站点内置的表单身份验证来保护数据服务,这在从AJAX表单访问服务时是可以的。但是,对于RESTful api来说,这并不理想。
作为表单身份验证的替代方案,我想让用户简单地将用户名和密码嵌入到web服务的url或请求参数中。
例如,如果我的web服务通常可以访问
http://localhost:1234/api.svc我希望能够使用url访问它。
http://localhost:1234/api.svc/{login}/{password}因此,我的问题如下:
重定向GET请求似乎很简单,因此将登录和密码附加为GET参数。我还知道如何检查http上下文,并使用这些参数来筛选结果。但我不确定是否/如何将同样的方法应用于发布、放置和删除请求。我可以在POST、PUT和DELETE请求中使用GET参数吗?
编辑:问题如何将登录和密码嵌入到web服务的URL中,以便我可以针对web服务执行POST、PUT和DELETE请求。一旦web服务运行并且登录/密码包含在HTTPContext中的某个地方,我知道如何实现身份验证。另外,我并不是在寻找实现表单或基本身份验证的方法。我知道怎么做,但这不是我想要的。
发布于 2010-07-20 11:27:07
最后,我使用了三种方法,这两种身份验证方法都可以很好地工作在我的数据服务上:
发布于 2010-06-14 23:05:44
我没有通过身份验证使用restful,但我必须确保用户组有权访问rest服务。这是通过传递给web服务的MD5令牌来完成的(这是一个普通的JSON服务,而不是WCF包装器)。基本上,我“知道”哪些网站被允许访问我的服务,所以我给他们自己的API密钥(为了简单起见,就是域名的MD5 )。这将由一个过滤器根据urlreferrer检查传入,如果它的MD5匹配,那么它就是go。
我知道这不是身份验证的答案,但是这是一种中等信任的方法,如果您只需要一个课程级别的“身份验证”就可以了。
不过,对于其他可能需要更少粒度的身份验证方法的项目,我很有兴趣了解其他人是如何做到这一点的。
发布于 2010-06-15 01:02:11
OData - WCF数据服务最佳实践来自TechEd -Meta站点主页- MSDN
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true" />
</webServices>
</scripting>
</system.web.extensions>这个怎么样?
https://stackoverflow.com/questions/3040707
复制相似问题