2

我有一个面向公众的 Web 服务,它有一个基于令牌的安全系统。登录是通过提供用户名和密码来完成的,并且会返回一个唯一的令牌,该令牌将在调用服务时继续使用。

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

当 Web 服务面向公众时,是否有安全的方法来执行此操作?我不希望发生的是,我们内部网络之外的某个人以某种方式获得了提升的权限。

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

4

2 回答 2

2

绝对有可能,这就是我建议的方式。

有一个位于您的应用程序和外部客户端之间的反向代理。此反向代理将对令牌进行身份验证,并在请求标头中设置所需的权限。

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

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

  2. 对 RP 有规则,可以根据调用者的 IP 设置包含提升权限的附加标头。可以将内部客户端 IP 设置为适用的列表。

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

于 2013-07-19T06:37:12.437 回答
1

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

于 2013-07-18T23:37:13.693 回答