向 IP 范围公开应用程序或验证针对 IP 范围的登录请求
expose application to IP range or validate a login requet against an IP range
瓦坎达有什么方法可以:
- 仅将 Wakanda 应用程序公开给特定的 IP 地址或 IP 范围
- 根据 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地址(同时阻止所有其他)的最佳方法是使用firewall; whether it be a software-based firewall (such as iptables or windows-firewall) 或基于硬件的防火墙(例如 Cisco ASA)。使用防火墙完全减轻了对问题第二部分的需求。
瓦坎达有什么方法可以:
- 仅将 Wakanda 应用程序公开给特定的 IP 地址或 IP 范围
- 根据 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地址(同时阻止所有其他)的最佳方法是使用firewall; whether it be a software-based firewall (such as iptables or windows-firewall) 或基于硬件的防火墙(例如 Cisco ASA)。使用防火墙完全减轻了对问题第二部分的需求。