Ruby on rails 服务对服务身份验证、服务标识和访问权限管理

Ruby on rails 服务对服务身份验证、服务标识和访问权限管理,ruby-on-rails,ruby,web-services,rest,soa,Ruby On Rails,Ruby,Web Services,Rest,Soa,我目前正在使用Ruby、RubyonRails、Sinatra和纯RackWeb服务开发一个分布式应用程序 我将有几个服务(RESTful,而不是基于SOAP的),它们将使用JSON进行通信,我需要一种方法来在它们之间的通信期间保护和验证每个服务的身份,因此没有人可以假装是一个服务并向其他服务发出请求 其核心思想是将其他服务视为“用户”,能够验证其身份,并在必要时限制其对数据的访问 因此,问题是如何仅使用Ruby实现这一点,以及如何有效地管理服务标识及其访问权限。 我是否应该构建一些可供服务使用

我目前正在使用Ruby、RubyonRails、Sinatra和纯RackWeb服务开发一个分布式应用程序

我将有几个服务(RESTful,而不是基于SOAP的),它们将使用JSON进行通信,我需要一种方法来在它们之间的通信期间保护和验证每个服务的身份,因此没有人可以假装是一个服务并向其他服务发出请求

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

因此,问题是如何仅使用Ruby实现这一点,以及如何有效地管理服务标识及其访问权限。

我是否应该构建一些可供服务使用的附加身份验证服务?

我应该构建内部gems来提供一些带有密钥/共享秘密的连接中间件吗?


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

我将生成一个应用程序id和密码,您可以在每个请求中传递该id和密码。因为您没有与其他用户打交道,只是应用程序尝试使用Desive查找身份验证令牌。

我认为OAuth是一种常用于web服务到web服务运行时身份验证的协议,特别是使用RESTful API。

此解决方案将在“一对多”服务关系中工作,但这更像是一种“多对多”的关系。如有必要,每个服务都应该能够与另一个服务对话。如果其中一项服务遭到破坏,我应该能够通过撤销对其他服务的访问权限或撤销访问密钥将其与组中的其他服务隔离开来。嗯,可能是某种中央身份验证服务器,您可以使用它来管理应用程序的服务凭据?这不是我的专业领域,但我认为这将是我考虑两者之间的最佳方式,比如有效凭证的本地副本,该副本将由身份验证服务更新,该服务将能够通过gems自动部署它们。沿着这些路线的东西。如果有人会有更好的解决方案,即使是在几个月内,请在此处留下评论:)如果您可以轻松地部署到这两个服务,在代码中保留appkey/secret是最简单的方法。如果出现安全漏洞,请重新生成密钥、更改服务并重新部署。如果部署很困难,请将密钥放入配置中。