2008-12-03 40 views
2

我们正在研究一个服务,将有网站访问统计和其他任务,但大多数使用将通过客户端宝石和耙子任务。处理这两个部分的身份验证的最佳方式是什么?最好的方式来处理跨网站和宝石客户端的用户验证

它看起来像fiveruns_tuneup,getexceptional,New Relic的和其他人使用用户名网站和通过,但使用存储在./config/serviceName.yml任何原因API密钥,最好是有反对用户API密钥/传递配置(他们是否使用密钥,因为经常把密钥检入SCM并在整个项目中使用,我们不会检查并且将会按用户设置)

GitHub将您的公钥放在github上服务器和使用它,但我认为默认情况下,git支持公钥/私钥。

会是首选保持./config/serviceName.yml还是因为我们必须建立与其他信息的子目录中有./serviceName/config.yml? (做的每用户,而不是存储在SCM的意思,最好是让这一切在一个排除的目录?)

只是寻找开始执行之前的一些想法和意见的最佳做法。

回答

0

github方法是在现有git实践的基础上引导的,然而这不是一个坏主意,因为大概每个用户都有自己的私钥来匹配中央颁布的公共公共密钥。由于密钥代理已经提供了安全认证的手段,这看起来像是一种非常安全的方法。公钥/私钥是一个经过深思熟虑的身份验证方案,不幸的是,该方案经过多次重新设计,取得了有限的成功。

API密钥的问题是任何获得API密钥副本的人都可以执行任何授权操作。在项目某处存储API密钥会引起用户共享密钥。如果您将公钥与用户关联起来,则可以基于每个用户授予客户权限,并且适当的关键代理方法表明这些方法不会存储在SCM中的任何地方。

我不知道我跟随配置/ serviceName.yml,或服务名/ config.yml之间的区别是什么。如果您将公钥/私钥用作客户端的身份验证方法,似乎并不恰当。

1

我建议您使用网站帐户的用户名/密码组合,以及任何Web服务的API密钥。以下是这项技术的优点:

  1. 通过将API密钥链接到一个帐户,您可以为同一用户提供多个API密钥。也许这可以用于许多使用此数据服务的远程Web服务器,或执行独特的跟踪。
  2. 将API密钥附加到帐户还可以让用户的用户名和密码保持不变,因为API密钥不包含它们。许多用户在许多服务上使用相同的用户名和密码,因此您正在帮助保护他们。
  3. 您可以限制访问每个API密钥的部分功能,但允许其用户名访问其帐户应有权访问的所有内容。此外,您甚至可以让他们限制API密钥的访问权限。

大部分的主要服务(API雅虎的Flickr,谷歌API等)使用的用户名和密码的帐户登录到网络帐户,并为整合点API密钥。

1

当你可以帮助时,切勿使用用户/密码。安全问题非常糟糕。如果用户名/密码泄露,你必须改变你的密码,或者他们可以访问整个帐户。

API密钥是更好,因为它们更容易改变,并且可以仅限于部分,你需要访问与API的(即,如果某人有你的密码,他们可以更改您的密码,他们不能,如果他们只需要一个API密钥)。每个客户端

不同的API密钥或安全令牌交换(如OAuth的)是,如果你有不只是你的API客户端更多的最佳解决方案。

相关问题