2011-08-25 69 views
0

我在JAX-RS(Jersey)中实现了2个RESTful服务:“A”和“B”。它们部署在单独的应用程序服务器上。 “A”和“B”都是我的。RESTful交叉认证

  1. 客户端连接并在“A”服务登录;
  2. 客户端询问“A”的资源,例如:https://blabla1/services/myresources;
  3. 对于检索资源“myresources”服务“A”应该请求(不重定向)服务“B”作为另一个资源,例如:https://blabla2/services/anotherresources

服务“B”也需要验证,这就是问题所在。服务“A”是否可能使用客户端认证参数询问“B”,以及它将如何工作?

我想这可能与oauth库,但我找不到任何示例(接近我的问题)以及如何。

感谢

+0

如果你拥有服务“A”和服务“B”,那么你是否可以拥有一个私人RESTful服务,允许“A”在不需要认证的情况下调用“B”? 由于“A”进行了身份验证,因此从用户安全角度来看应该没问题。你可以确保私人服务,以确保没有其他人可以称之为私人服务。 –

+0

我如何确保私人服务的安全以确保没有其他人可以拨打它? –

+0

只有“A”和“B”服务才知道的数字证书是我通常使用的。 你有一个内部网络,“A”和“B”都可以访问,但不对外界开放吗?如果是这样,您可以阻止来自任何外部网络的服务。 –

回答

1

只是总结在评论中列出的解决方案:

服务“B”(或在它前面的代理)应只接受服务器“A”的证书的HTTPS请求。 (服务器“A”也可以验证服务器“B”的证书,以避免中间人攻击。)

然后用户名可以是纯文本请求参数。

如果您的网络人员比服务器人员要好或发现SSL令人生畏,请让网络人员在您的站点之间建立安全通道(形成VPN),并使通道以外的原始Internet无法使用服务“B” 。

+0

同时考虑在双方添加防火墙规则以保护频道_除了SSL。让外界知道有一扇门让他们去尝试是没有意义的。 –