Worklight Security 403 Ответ. Отсутствует метод handleFailure для пользовательской области безопасности.

В настоящее время я работаю над POC Worklight 6.0, используя модуль проверки подлинности/входа в систему с помощью заголовка. При попытке доступа к защищенному адаптеру в приложении я получаю следующую ошибку в консоли:

403 (Forbidden)
TypeError: Объект # не имеет метода 'handleFailure'
Я получаю эту ошибку при тестировании веб-версии приложения через консоль в Chrome.

Я также получаю аналогичную ошибку при тестировании версии приложения для iPhone. исключение. TypeError: 'undefined' не является функцией (оценка 'handler.handleFailure(wlFailure[realm])')

Просматривая файл wlclient.js в классе/функции AbstractChallengeHandler, я не вижу определения функции для handleFailure, которое объясняет приведенную выше ошибку. Я предполагаю, что должно быть определение для handleFailure или есть дополнительные конфигурации, необходимые для защиты ресурса адаптера с использованием проверки подлинности заголовка?

Причина, по которой я задаю этот вопрос, заключается в том, что я пытаюсь проверить свою логику в части «ChallengeHandler» на стороне клиента, которую я создал, и я пытаюсь понять, почему я не могу увидеть этот тип ошибки/ответа через обычная связь на стороне клиента challenger.isCustomResponse/challenger.handleChallenge.

Код/конфигурация ниже

Любые советы/ввод приветствуются

аутентификацияConfig.xml

<securityTests>
    <webSecurityTest name="WebSecurityTest">
        <testUser realm="HeaderAuthRealm"/>
            </webSecurityTest>
            <mobileSecurityTest name="MobileTest">
        <testUser realm="HeaderAuthRealm"/>
        <testDeviceId provisioningType="none"/>
    </mobileSecurityTest>
    <customSecurityTest name="HeaderAuth-securityTest">
                <test realm="HeaderAuthRealm" isInternalUserID="true" />
            </customSecurityTest>       

</securityTests> 
<realms>
    <realm name="HeaderAuthRealm" loginModule="HeaderLoginModule">
        <className>com.worklight.core.auth.ext.HeaderAuthenticator</className>
    </realm>
</realms>
<loginModules>
    <loginModule name="HeaderLoginModule">
        <className>com.worklight.core.auth.ext.HeaderLoginModule</className>
        <parameter name="user-name-header" value="HeaderAuth_USER"/>
    </loginModule>
</loginModules>

HeaderAuthRealmChallenger.js

    var HeaderAuthRealmChallenger = WL.Client.createChallengeHandler("HeaderAuthRealm");

    HeaderAuthRealmChallenger.isCustomResponse = function(response) {
      if (response.responseJSON.isSuccessful) {
          WL.Logger.info('AUTHENTICATION SUCCESS =).......');
          return false;
      }else{
          return true;
      }
    };

    HeaderAuthRealmChallenger.handleChallenge = function(response){
        WL.Logger.info('AUTHENTICATION FAILED =(.......');
        $('#login').css('display','block');
    };

person Gersty    schedule 01.04.2014    source источник
comment
Я думаю, вы должны реализовать handleFailure...   -  person Idan Adar    schedule 02.04.2014
comment
Спасибо за ответ. Не могли бы вы указать, где в документации worklight 6.0 это явно объясняется.   -  person Gersty    schedule 02.04.2014
comment
@Gersty - я подозреваю, что ошибка, которую вы получаете, исходит не от кода обработчика вызова, а от кода клиента, который вызывает адаптер. Например, в вызове WL.client.invokeProcedure() вы могли указать обработчик onFailure для 'handleFailure', но не реализовать эту функцию.   -  person billdodd    schedule 02.04.2014


Ответы (1)


Документация по этому вопросу в настоящее время отсутствует и должна быть обновлена ​​в ближайшее время.

Я думаю, что используемый вами аутентификатор не поддерживает обычный ChallengeHandler, а использует WLChallengeHandler.

Вот предварительный просмотр документации по этому вопросу:

WL.Client.createWLChallengeHandler() API

Этот метод создает объект обработчика вызовов для обработки вызовов, отправляемых сервером Worklight. Обработчик WLChallenge работает только с областью проверки подлинности, основанной на протоколе проверки подлинности Worklight, то есть для которой экземпляр средства проверки подлинности на стороне сервера расширяет один из средств проверки подлинности, предоставляемых Worklight, например WorklightProtocolAuthenticator или UsernamePasswordAuthenticator, или непосредственно реализует интерфейс WorklightAuthenticator.

В каждом мире должен быть только один обработчик вызовов. Чтобы соответствовать протоколу аутентификации Worklight, вызов, который получает область, должен быть объектом JSON.

Параметры realmName — имя области, представляющей вызов, в файле конфигурации authenticationConfig.xml. Используйте это имя для идентификации области, требующей аутентификации.

При создании WLChallengeHandler необходимо реализовать следующие методы:

  • handleChallenge() — этот метод вызывается, когда сервер Worklight возвращает запрос для области.
  • processSuccess() — этот метод вызывается, когда сервер Worklight сообщает об успешной аутентификации.
  • handleFailure() — этот метод вызывается, когда сервер Worklight сообщает об ошибке аутентификации.
person Nathan H    schedule 08.04.2014