ワカンダの方法はありますか:
- 特定の IP アドレスまたは IP 範囲にのみ Wakanda アプリケーションを公開する
- IP アドレスまたは IP 範囲に対してログイン要求 (カスタム ログイン) を検証する
ワカンダの方法はありますか:
質問に1つずつ答えます:
1-
これは、OS のファイアウォールを使用して行う必要があります (たとえば、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など) であるか、ハードウェアベースのファイアウォール ( などCisco ASA) であるか。ファイアウォールを使用すると、質問の 2 番目の部分の必要性が完全に軽減されます。
最初の質問については、プロジェクト設定ファイル ( Settings.waSettings ) でクロスオリジン リソース共有を有効にし、外部ページが Wakanda サーバーにデータ要求を送信できるドメイン名または IP アドレスのリストを定義する必要があります。 CORS経由。複数のドメイン属性を追加して、ホワイト リストを作成できます。