向 IP 范围公开应用程序或验证针对 IP 范围的登录请求

expose application to IP range or validate a login requet against an IP range

瓦坎达有什么方法可以:

  1. 仅将 Wakanda 应用程序公开给特定的 IP 地址或 IP 范围
  2. 根据 IP 地址或 IP 范围验证登录请求(自定义登录)

第一个问题,在Project Settings文件(Settings.waSettings)中启用Cross-origin resource sharing,需要定义允许外部页面访问的域名或IP地址列表通过 CORS 向 Wakanda 服务器发送数据请求。可以添加多个域属性创建白名单。

我会一一解答的:

1-

这应该使用您的 OS' 防火墙完成(例如,如果您使用 Linux,则使用 iptables)

2-

如果您使用防火墙限制对应用程序的访问,则可能不需要执行此操作。但如果你真的需要:

目前没有好的方法来做到这一点,因为您无法禁用 authentication REST API。我建议的解决方法如下(但我认为如果您使用的是 active directory 则它不会起作用):

  • 添加用于身份验证的自定义请求处理程序 /login 您可以在其中执行以下操作:

    function login(request,response){
            var ip = request.remoteAddress;
    
            if( ! isIPAuthorized(ip)){
                            response.statusCode = 403;
                            return;
            }
    
            sessionStorage["login-request"] = true;
            /*
             * Your login code here
             * For instance you can use loginByPassword, createUserSession ..
             */
            sessionStorage["login-request"] = false;
    }
    
  • 在您的 Login Listener 中,您可以通过检查 sessionStorage :

    来检查登录请求是否来自您的自定义登录功能
    if(!sessionStorage["login-request"]){
            return {
                   "error" : 1024,
                    "errorMessage" : "Unautorized Login Attempt"
            }
    }
    

这样,任何使用默认 REST 身份验证 API 且未检查 IP 的登录尝试都将被拒绝。

任何应用程序暴露给特定范围的IP地址(同时阻止所有其他)的最佳方法是使用; whether it be a software-based firewall (such as or ) 或基于硬件的防火墙(例如 Cisco ASA)。使用防火墙完全减轻了对问题第二部分的需求。