使用单一密钥策略保护MVC Rest + Soap服务

时间:2010-08-04 02:33:34

标签: .net wcf web-services rest soap

我有一个asp.net MVC 2站点设置来提供API json / xml响应

例如

[GET] /产品/ 10

返回产品的xml响应

此外,我有一个嵌入到站点中的WCF SOAP服务,它返回相同的方法(相同的合同)但是通过SOAP

例如

GetProduct(10)

返回xml soap产品。

我之所以选择这条路线是因为我喜欢纯粹的MVC方法+路由引擎。我的客户希望使用基于密钥/令牌的身份验证系统来保护每个请求。

他们只想在每个请求中包含一个密钥......

我的问题是......对此最好(最容易获得的方法)是什么?我正在考虑使用自定义HTTP标头但是...某些客户可能在设置此值时遇到问题吗?使用WSDL生成的Soap客户端容易吗?

我宁愿不用关键属性污染我的业务对象。

1 个答案:

答案 0 :(得分:0)

答案取决于您希望支持哪种类型的客户。你有很多选择:

  • 对支持WS-Security的现代客户端使用wsHttpBinding
  • 对没有的客户端使用basicHttpBinding - 如果愿意,可以通过SSL运行,并且可以使用您选择的HTTP身份验证技术
  • 如果您愿意,可以使用basicHttpBinding和自定义标头。请注意,某些客户端不支持标头,或者必须付出额外的努力才能使用它们。我个人并不介意让这些客户感到不安,但你可能会这样。

无论您选择哪种方式,WCF都允许您同时实施所有这些内容。您可以让单个服务在多个端点上提供相同的合同。例如,您可以在https://services.company.com/myservice/basic上保留basicHttpBinding,同时支持http://services.company.com/myservice/secure上的WS-Security。

相关问题