有没有瓦坎达方式:
- 仅向特定 IP 地址或 IP 范围公开 Wakanda 应用程序
- 根据 IP 地址或 IP 范围验证登录请求(自定义登录)
我将一一回答问题:
1-
这应该使用您操作系统的防火墙来完成(例如,如果您在 Linux 上使用 iptables)
2-
如果您使用防火墙限制对应用程序的访问,则可能不需要这样做。但如果你真的需要:
今天没有很好的方法来做到这一点,因为您不能禁用身份验证 REST API。我提出的解决方法如下(但我认为如果您使用的是活动目录,它不会起作用):
添加自定义请求处理程序以进行身份验证/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"
}
}
这样,任何使用未检查 IP 的默认 REST 身份验证 API 的登录尝试都将被拒绝。
将任何应用程序暴露给特定范围的 IP 地址(同时阻止所有其他地址)的最佳方法是使用防火墙;无论是基于软件的防火墙(例如iptables或windows-firewall)还是基于硬件的防火墙(例如 a Cisco ASA)。使用防火墙完全减轻了对问题第二部分的需求。
第一个问题,在项目设置文件(Settings.waSettings)中开启跨域资源共享,需要定义允许外部页面向Wakanda服务器发送数据请求的域名或IP地址列表通过 CORS。可以添加多个域属性以创建白名单。