2016-03-29 3 views
0

Есть ли способ Wakanda к:выставить заявку на диапазон IP или проверить логин requet против диапазона IP

  1. выставить приложение Ваканде только к конкретному IP-адрес или диапазон IP
  2. проверить запрос входа в систему (пользовательский Логин) против IP-адреса или диапазона IP

ответ

1

Отвечу на вопросы один за другим:

1-

Это должно быть сделано с помощью ОС»брандмауэра (с помощью IPTables, например, если вы на Linux)

2-

Если вы ограничиваете доступ к приложению с помощью брандмауэра, вам может и не понадобиться это делать. Но если вам действительно нужно:

Сегодня нет хорошего способа сделать это, потому что вы не можете отключить authentication 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" 
         } 
    } 
    

Таким образом, любая попытка входа в систему с использованием API аутентификации REST по умолчанию, если IP-адреса не проверены, будет отклонена.

+0

спасибо за ваш ответ Хамза. есть ли способ доступа к объекту 'request' в пользовательском обработчике входа (внутри файла required.js) решения? – Stefan

+0

Сегодня это невозможно. Я расскажу об этом с командой, чтобы узнать, можем ли мы иметь что-то вроде 'httpServer.getRequest()' для доступа к запросу, прикрепленному к текущему потоку, как [HttpRequest] (http://doc.wakanda.org/home2.en .html #/HTTP-Request-Handlers/HTTPRequest.201-803366.en.html) – hamzahik

+0

, что было бы здорово и открыло бы много возможностей. спасибо – Stefan

0

для первого вопроса, включите Cross-origin resource sharing в файле настройки проекта (Settings.waSettings), и вам нужно определить список имени домена или IP-адрес, с где разрешены внешние страницы nd запросов на сервер Wakanda через CORS. Для создания белого списка можно добавить несколько атрибутов домена.

0

Лучший способ выставить любое приложение к определенному диапазону IP-адресов (в то время как блокирование всех других) находится с ; будь то программный брандмауэр (например, или ) или аппаратный брандмауэр (например, Cisco ASA). Использование брандмауэра полностью устраняет необходимость во второй части вашего вопроса.