2011-05-28 67 views
2

我目前正在使用Ruby,Ruby on Rails,Sinatra和pure Rack Web服务开发分布式应用程序。服务到服务认证,服务标识和访问权限管理

我将有一些服务(REST风格的,不是基于SOAP),这将使用JSON,我需要一种方式它们之间的通信过程中保护和验证那些服务中的身份沟通,所以没有人能假装做一项服务并向其他服务提出请求。

其核心思想是将其他服务视为“用户”,并能够验证其身份并在必要时限制他们对数据的访问。

所以问题是如何仅使用Ruby来做到这一点,以及如何有效管理服务身份及其访问权限。

我应该建立一些额外的服务可用的验证服务吗?

我应该建立内部宝石来提供密钥/共享秘密的一些连接中间件?

是否有其他方法可以做到这一点?

回答

1

我会生成一个应用程序ID和秘密,你可以通过每个请求。既然你没有与其他用户打交道,只是应用程序尝试用设计来查看身份验证令牌。

+0

该解决方案可以在“一对多”服务关系中起作用,但这更像是“多对多”关系。如有必要,每项服务都应该能够与另一个服务对话。如果其中一项服务会受到影响,我应该能够通过撤销对其他用户的访问权限或撤销访问密钥来将其与其他组织隔离。 – 2011-05-30 06:22:25

+0

嗯,也许某种中央身份验证服务器,您可以使用它来管理应用程序的服务凭据?它不是我的专业领域,但我认为这将是最好的方式 – 2011-05-30 22:35:13

+0

我正在考虑之间的某些事情,比如有效凭证的本地副本,这些副本将通过身份验证服务进行更新,该服务将能够通过宝石自动部署它们。沿着这些线的东西。如果有人会有更好的解决方案,即使在几个月内,请在这里留下评论:) – 2011-05-31 18:39:05