面向公众的Web服务安全 - 内部请求

时间:2013-07-18 23:17:42

标签: security service web internal

我有面向公众的Web服务,它具有基于令牌的安全系统。登录是通过提供用户名和放大来完成的。返回密码和唯一令牌,无论何时调用该服务,都会使用该令牌。

我的问题是:是否有一种安全的方法来区分来自我们内部网络外部的来电和来自内部的来电?我想为从内部网络中调用服务的客户端提供提升权限。具体来说,我们有一个网站与我们的网络服务在同一个网络上运行,我想在调用我们的服务时给网站提升权限。

当Web服务面向公众时,是否有一种安全的方法可以做到这一点?我不想发生的事情是,来自我们内部网络之外的人以某种方式获得了提升权限。

这些服务是使用Java和CXF框架实现的。

2 个答案:

答案 0 :(得分:1)

你有选择,我可以立即想到至少2种方法。 1)还需要一个API密钥来访问您的Web服务,特殊情况下根据其密钥提供给网站的访问权限。 2)根据请求者(网站或内部网络)的IP地址提升权限。

答案 1 :(得分:1)

绝对可能,我建议这样做。

在您的应用程序和外部客户端之间安装一个反向代理。此反向代理将验证令牌以及请求标头中设置的所需权限。

可以通过以下方法提升内部客户端的权限

  1. 在反向代理上的请求中设置身份验证标头。如果此标头设置为true,则表示该呼叫来自外部客户端。应用程序可以根据此标头决定是否需要授权。内部客户可以调用此服务,而无需通过任何身份验证/授权。请注意,这将完全消除内部客户端的任何身份验证。

  2. 在RP上有规则,可以根据呼叫者的IP设置包含提升权限的其他标头。内部客户端IP可以制作成适用的列表。

  3. 内部和外部客户端有两个端点,两个端点都有反向代理。内部会在请求标头中设置提升权限。