验证Web服务的最佳方法是什么?

Pur*_*ome 6 .net authentication web-services

我们有一个.NET Web服务API.目前,人们使用SOAP定义来使用API​​,因为我们需要通过SOAP标头中的自定义Authentication元素进行身份验证.完美的工作.精细.

SOAP要求请求为POST.我们希望允许用户使用GET动词(因此它可以缓存).

那么,提供简单GET API(不一定是web服务!)的最佳方法是什么,它还提供身份验证?

示例API路由:

http://www.blah.com/api/Search?query=Foo

这是一种可接受的常见做法吗?

http://www.blah.com/api/Search?query=Foo&Key=<some guid>

注意:我也不想实现SSL,也不想在IIS等中安装额外的软件或插件等.

tva*_*son 1

如果 Web 服务需要保护,并且我假设它需要保护,因为您当前有一个 Authentication 标头,那么您应该重新考虑使用 GET 而不是使用 SSL,至少对于身份验证部分而言。至少我会通过 SSL 将授权请求发布到 Web 服务/应用程序。如果您不想为每个请求提供身份验证,那么您将需要接受返回(并在服务中生成)消费者可以用于后续请求的授权 cookie。

我会避免在 URL 中使用身份验证,这正是您想要支持 GET 的原因——如果可以缓存 URL,那么凭据也会被缓存。这会破坏 Web 服务的安全性,因为任何人都可以重复使用缓存的凭据。