如何将公共Web服务API设为私有?

时间:2010-12-16 08:37:17

标签: c# web-services api soap

我有一个API,仅供iphone,android和blackberry移动应用程序使用,我不想让其他任何人使用API​​或查看SOAP API。

我该怎么做?

注意:如果我限制IP并将Web服务设为私有,则移动应用程序将停止工作,如果我将其公开,则任何人都可以看到该Web服务。

5 个答案:

答案 0 :(得分:9)

作为起点,您可以禁用WSDL发布。这样,只有已生成代理的客户端才能发现和使用Web服务。当然,该服务仍然是公开的,任何知道如何正确格式化SOAP请求的人都可以调用它。第二步是引入安全性(私钥,HTTPS,客户端证书等),以便只有受信任的客户才能使用该服务。

答案 1 :(得分:3)

首先建议没问题,如果你完全使用它,请停止WSDL发布。

但基本上你必须为你的应用程序实现一个身份验证/授权机制。应该有登录方法,

  1. 检查凭据 - 登录/密码
  2. 检查http请求代理设置 - 如果是移动设备
  3. 如果两个要求匹配,则授权此请求(例如,通过cookie),或返回授权令牌,这将为所有API方法输入。如果令牌没问题,那么API方法就可以工作..不是 - 例如,它返回404。

答案 2 :(得分:0)

任何人都可以嗅到流量,并欺骗它的各个方面。所以你不能阻止它,虽然加密流量会有所帮助。您可能所做的是限制对注册用户的访问权限,但如果您的应用允许未注册的使用,这可能无法很好地发挥作用。

答案 3 :(得分:0)

您可以通过HTTPS运行它并需要客户端证书。这取决于所涉及的移动平台支持自定义客户端证书的程度。当然,如果客户端证书是从应用程序复制的,那么你就像开放一样...

答案 4 :(得分:0)

禁用WSDL,将HTTPS与SOAP标头结合使用以检查凭据(例如发送用户名和散列密码)。请注意,使用HTTPS,此数据已加密,包括SOAP标头。 如果从某个IP记录了足够多的错误请求,您可以暂时将该IP地址列入黑名单。