Приложение Worklight отправляет множество запросов, которые приводят к HTTP 401.

У нас есть приложение worklight с безопасностью приложения, определенной в application-descriptor.xml. У нас есть обработчик вызовов, который справится с проблемами. В функции wlCommonInit() мы вызываем функцию WL.Client.Connect(), которая, в свою очередь, запускает обработчик вызова. Пользователь может ввести идентификатор пользователя / пароль и успешно пройти аутентификацию. Все хорошо до сих пор.

В обработчике вызовов после успешной аутентификации мы вызываем метод ChallengeHandler.submitSuccess(), чтобы сообщить worklight об успешной аутентификации.

Этот вызов должен привести к WL.client.connect() onSuccess функции обратного вызова, но вместо этого он делает много запросов к URL ../App/iphone/init и возвращается с 401. В конце концов, через 1-2 минуты он получает HTTP 200 для конкретного запроса и затем входит в onSuccess().

Есть идеи, почему так много запросов, которые приводят к 401?

Ниже приведен фрагмент кода в main.js ...

            WL.Client.connect({
                onSuccess : callbackOnSuccess,
                onFailure : callbackOnFailure
            });

в ChallengeHandler.js ..

$('#loginButton').bind('click', function () {
  var reqURL = '/j_security_check';
    var options = {};
    options.parameters = {
            j_username : $('#username').val(),
            j_password : $('#password').val()
    };
    options.headers = {};
    ChallengeHandler.submitLoginForm(reqURL, options, ChallengeHandler.submitLoginFormCallback);
});

ChallengeHandler.submitLoginFormCallback = function(response) {
        WASLTPARealmChallengeHandler.submitSuccess();
};

person Abhishek V    schedule 17.09.2015    source источник


Ответы (1)


Теория:

У вас один сервер MobileFirst Server или несколько?

  • Если у вас только один сервер, было бы полезно получить журнал сетевого трафика с помощью такого инструмента, как Wireshark.
  • Если у вас несколько серверов, есть ли у вас также балансировщик нагрузки?

    Для успешного прохождения аутентификации будет несколько запросов - первый для запуска обработчика вызовов, а второй для передачи учетных данных пользователя. Они должны подключаться к одному и тому же серверу.

    В случае неправильной настройки балансировщика нагрузки запросы могут попадать на разные серверы MobileFirst. Это звучит, как будто запросы пересылаются между серверами, а это означает, что запрос аутентификации попадает на один сервер, а запросы учетных данных - на другой ...

    Таким образом, в случае нескольких серверов вам необходимо убедиться, что в используемом балансировщике нагрузки включены параметры Sticky Sessions.

person Idan Adar    schedule 18.09.2015
comment
Обновление: вы были правы. У нас есть два сервера в ферме, и похоже, что плагин веб-сервера не устанавливает привязку сеанса. Большое спасибо за ответ. - person Abhishek V; 19.09.2015