我正在寻找关于如何限制对API的访问和记录调用的想法,我们正在为业务合作伙伴提供与我们的客户关怀应用程序接口的API。我们是否应该像为自己的员工一样为外部合作伙伴创建用户名和密码?有没有一种.Net的管理单元层可以管理访问限制和计量,或者我们必须自己滚动?
我们应该支持什么格式?JSON是规范的,还是有一些我需要知道的新东西?
我是一个提供软件即服务的新手,我希望得到一些建议,包括一个开源的.Net项目,我可以从这个项目中获得一些提示。
编辑:现在带着丰厚的新鲜感!
编辑:添加内容以回答一些问题
这将是供我们的合作伙伴使用的API,用于访问我们的客户服务功能,例如创建新帐户、付款和其他帐户管理功能。
我熟悉PostSharp,并且已经制作了一个具有方法调用日志功能的技术演示。
我对调查我们的合作伙伴喜欢哪种格式/协议不感兴趣,因为其中一个要求是能够在没有IT参与的情况下添加新的合作伙伴。我只是想要一些关于最佳实践的提示,这样我们就可以以“正确”的方式来做,并且它们可以符合。
发布于 2009-10-04 22:46:46
我们一直在使用3scale。它允许计量和限制对API的访问。
发布于 2009-10-04 22:29:26
您不太清楚谁是合作伙伴;或者您是否在保护对数据的访问、限制API调用,或者两者兼而有之。
你正在做的事情很可能是针对你的业务的。假设您需要保护服务提供访问的数据,则需要对每个用户进行身份验证并保护传输层。对于前者,您需要为最终用户提供用户名和密码或惟一的API令牌。对于每个请求,都应该检查这一点。如果您的服务使用HTTP,则可以使用SSL启用传输安全性。在web服务器级别启用它通常是最简单的,您没有提到您正在进行任何特殊的web服务托管。
假设这个安全性已经就位,它应该为审计提供基础,这就是我假设您所说的日志调用的意思。用户名或API令牌将使您了解谁在进行调用,这是审计的基础。接下来,创建一个您希望查看审计跟踪的数据列表。询问业务用户所记录的信息是否有助于处理您的问题(是什么驱使您添加日志记录)。
接下来要考虑的是日志代码应该放在哪里(有中心点吗?您是否使用AOP来添加它?),以及审计跟踪应该记录到的位置。有像PostSharp这样的工具可以让你在不做大量修改的情况下在你的应用程序中进行日志记录,但是在这样做之前,看看有没有一种简单的方法可以在你的应用程序中的一个公共位置添加一个日志函数来“捕获”你需要的信息。
一旦您掌握了数据,就需要将其保存在某个地方。这就是事情变得有趣的地方。您需要了解应用程序的性能特征,以及可能的使用模式。在许多应用程序中,只记录到数据库是可以的,但有时这将是一个性能问题。对于某些人来说,将日志记录到文本文件是可以的,但是如果需要将数据重新关联到您的用户数据库呢?在这种情况下,您需要一些代码来处理日志文件和导入数据。
在您花费太多时间构建任何日志记录代码之前,有必要先看看NLog、Log4Net和企业库logging block。这些都是通用工具,可以提供更好的基础。
如果需要强制实施用户配额,您可能需要考虑日志的处理速度,以确定用户进行了多少次调用。理想情况下,每次处理传入的请求时,您都应该掌握用户的当前状态,以便能够返回适当的响应。将此功能添加到现有应用程序中,并提供支持它的“基础设施”可能是一种努力。
是否使用REST、JSON、XML、SOAP等确实取决于您的受众。他们会使用像Ruby和Python这样的语言来调用你的服务,还是会使用.NET?如果他们主要是.NET用户,那么使用JSON构建纯粹的REST接口可能没有多大意义,因为.NET使SOAP变得非常简单。另一方面,如果您在客户端使用JavaScript,SOAP和XML就很糟糕。只需记住,没有更多关于用户的信息就没有正确的答案。通常,JSON不是万能的,XML也不总是最糟糕的选择。
更新
我对调查我们的合作伙伴喜欢哪种格式/协议不感兴趣,因为其中一个要求是能够在没有IT参与的情况下添加新的合作伙伴。我只是想要一些关于最佳实践的提示,这样我们就可以以“正确”的方式来做,并且它们可以符合。
最灵活的选择可能是REST和XML。这是最广泛支持的,因为几乎所有平台都有HTTP堆栈。在表示数据方面,XML可以说比JSON更灵活。我会从这里开始,回到支持方面,可能会添加JSON。然而,这不是我所说的以客户为中心的方法。如果这是一个平台的核心特性,那么你应该真正关注你的客户想要什么。嘿,即使你今天做了一个快速调查,至少你会有一个更合理的起点。如果你在合作伙伴中认识任何开发人员,那么你可能能够从他们使用的工具和语言中猜测出他们更喜欢什么(甚至看他们的招聘广告可能会让你对他们是.NET还是Java商店有所了解-尽管这还远不是一个科学的方法)。
发布于 2009-10-01 14:30:58
我认为你需要定义你到底在想什么。
软件即服务意味着您为用户提供了一个可工作的软件,以便在使用您的软件作为处理数据的工具时使用自己的 data。在这里,用户通常对您提供的数据不感兴趣(这对他们来说是无用的)。SaaS只是他们的一个替代解决方案。他们还可以在本地网络中根据自己的需要开发/安装软件,因为他们的主要兴趣是他们的数据,他们只需要一个工具来处理这些数据。
一般来说,使用软件即服务,您可以通过用户的帐户来管理用户。帐户有一个功能包,其中定义了可用的功能、所用资源的报价以及定义可以执行和不可以执行的操作的访问权限。
您所描述的基本上是对data进行的外部访问。它与SaaS的概念没有什么共同之处。例如,GeoIP位置服务也有同样的问题,允许访问他们的数据库,但监控每个用户的使用情况(例如,一个帐户允许一个用户每月1000个地理位置请求)。
为了了解什么是最适合你的,你需要决定你希望允许你的商业伙伴进行什么样的活动。
关于格式,我认为它与这次讨论无关,而且现在考虑还为时过早。你可以问问你的伙伴他们更喜欢什么。
https://stackoverflow.com/questions/1504286
复制相似问题