使下载内容到期的方案?

时间:2010-06-02 17:38:01

标签: web-services api caching

我将提供一个网络API服务,允许用户下载和“租用”内容,每月订阅费用。 API将向所有人开放,或者可能只是选择方(尚不确定)。每个开发人员必须同意许可,并且他们会为他们的人员收到开发人员密钥。每个软件应用程序也都有自己的密钥。因此,最终用户将下载将与我的服务API进行交互的软件。每个用户也将拥有每个应用程序的密钥(可能使用OAuth)。

内容将在首次下载时进行缓存,并且只能通过缓存内容的第三方应用程序离线访问。

如果用户取消订阅,我计划执行以下操作:

  1. 停用所有应用程序的用户OAuth密钥。
  2. 不允许用户的帐户通过API下载新内容(以及随后使用该API的任何软件)。
  3. 现在,最大的问题是:如果内容取消订阅,我如何让内容过期?如果他们取消,他们就不应再访问内容了。以下是我所想到的想法(其中一些是半解决方案,还没有完全充实):

    1. 要求应用程序使用用户的OAuth密钥加密下载的内容,使其仅供应用程序使用。这将阻止大多数用户进入缓存目录,只是复制和保存文件。
    2. 每月更新一次用户密钥,强制内容按月基本重新缓存。然后,用户可以在取消订阅后访问内容一个月。
    3. 要求应用程序定期“向家庭服务”[到服务]并检查用户的订阅是否已终止。如果是这样,请在API开发人员许可证中要求应用程序到期缓存。如果发现应用程序不符合要求,则其密钥(以及可能是所有开发人员的密钥)将因此永久停用。
    4. 一个主要担心是某些应用程序可能会公然忽略许可证的限制。依赖遵守许可限制的应用程序通常是否可以接受?不好主意?

      还有其他想法吗?也许是一种让内容在x天后自动过期的方法?别的什么?我愿意接受开箱即用的想法。

1 个答案:

答案 0 :(得分:2)

如果要控制内容的使用,则需要控制访问点。大多数实现此方案的应用程序都提供了一个服务器或客户端产品,可以提供对内容的访问。

我假设您的架构正在返回数据,纯粹而简单。如果我是使用您的Web服务的开发人员,那么什么是阻止我在查询时将静态文件中的所有响应缓存?没什么,因为您的接入点是您的Web服务器。一旦离开接入点,您无法控制我对内容的使用。

除非下载的内容在使用时需要回调您的服务器,否则您对此策略运气不佳。