0

ワカンダの方法はありますか:

  1. 特定の IP アドレスまたは IP 範囲にのみ Wakanda アプリケーションを公開する
  2. IP アドレスまたは IP 範囲に対してログイン要求 (カスタム ログイン) を検証する
4

3 に答える 3

1

質問に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 を使用したログイン試行は拒否されます。

于 2016-03-29T16:35:58.817 に答える
0

アプリケーションを特定の範囲の IP アドレスに公開する(他のすべてをブロックする) 最善の方法は、を使用することです。ソフトウェアベースのファイアウォール ( など) であるか、ハードウェアベースのファイアウォール ( などCisco ASA) であるか。ファイアウォールを使用すると、質問の 2 番目の部分の必要性が完全に軽減されます。

于 2016-03-29T23:50:45.003 に答える
-1

最初の質問については、プロジェクト設定ファイル ( Settings.waSettings ) でクロスオリジン リソース共有を有効にし、外部ページが Wakanda サーバーにデータ要求を送信できるドメイン名または IP アドレスのリストを定義する必要があります。 CORS経由。複数のドメイン属性を追加して、ホワイト リストを作成できます。

于 2016-03-29T14:07:49.027 に答える