[英]RESTful WCF Data Service Authentication
我想为现有的 ASP.NET MVC 网站实现 REST api。 我已经设法设置 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 请求。 我可以在 POST、PUT 和 DELETE 请求中使用 GET 参数吗?
编辑:我的问题是如何将登录名和密码嵌入到 Web 服务的 URL 中,以便我可以对 Web 服务执行 POST、PUT 和 DELETE 请求。 一旦 Web 服务运行并且登录名/密码包含在 HTTPContext 中的某处,我确实知道如何实现身份验证。 另外,我不是在寻找实现表单或基本身份验证的方法。 我知道该怎么做,但这不是我想要的。
我不必通过身份验证使用 restful,但我必须确保用户组有权访问 rest 服务。 我通过传递给 Web 服务的 MD5 令牌执行此操作(这是一个普通的 JSON 服务,而不是 WCF 包装器)。 基本上,我“知道”哪些网站可以访问我的服务,所以我给了他们自己的 API 密钥(为简单起见,这是域名的 MD5。这会通过过滤器对 urlreferrer 进行检查,如果 MD5它匹配,然后就可以了。
我知道这不是身份验证答案,但如果您只需要非常课程级别的“身份验证”,它是一种有效的中间信任方法。
不过,我很想看看其他人是如何做到这一点的,对于我可能需要一种不太严格的身份验证方法的其他项目。
OData - 来自 TechEd 的 WCF 数据服务最佳实践 - Meta-Me - 网站主页 - MSDN 博客
<system.web.extensions>
<scripting>
<webServices>
<authenticationService enabled="true" />
</webServices>
</scripting>
</system.web.extensions>
这个怎么样?
看看以下答案是否对您有帮助:
你的第一个问题:
这是一个明智的方法吗?
如果您的服务通过 https 运行,我看不到任何使用此方法的问题。
如果是,我该如何实施?
您可以在其他方法中使用 GET 参数,例如。 这里流在正文中传递。
[OperationContract]
[WebInvoke(Method="POST", UriTemplate = "UploadFile/{fileName}/{userToken}")]
string UploadFile(string fileName,string userToken,Stream fileContents);
最后,我使用了三重方法,这些身份验证方法中的任何一种都可以在我的数据服务上正常工作:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.