Каково значение аргумента для WL.Client.createChallengeHandler?

Я использую Worklight 6.0 и аутентификацию на основе форм.

Я думал, что аргументом для WL.Client.createChallengeHandler() была область, к которой будет обращаться обработчик вызовов, но тестирование, похоже, указывает на то, что нет способа создать обработчик вызовов для конкретной области.

У меня есть переходник с 2 процедурами. Каждая процедура имеет отдельный тест безопасности. Каждый тест соответствует разным областям: r1 и r2.

В моем приложении у меня есть 2 обработчика вызовов, один для r1 и один для r2. Однако обработчик вызовов для r1 в конечном итоге обрабатывает вызовы для обеих процедур адаптера. Я обнаружил, что могу использовать любую строку в WL.Client.createChallengeHandler() … несуществующие области, пустую строку или даже без аргумента, и это может изменить, какой из двух обработчиков вызовов используется, но используется тот, который используется. для всех вызовов.

Для чего используется аргумент WL.Client.createChallengeHandler()? Есть ли способ привязать обработчик вызова к области?


person David Dhuyveter    schedule 11.12.2013    source источник


Ответы (1)


Этот аргумент не имеет значения для большинства случаев аутентификации пользователя. Realm обнаруживается не по имени, а с помощью функции isCustomResponse() внутри обработчика вызова.

В основном структура аутентификации WL знает, как обращаться с двумя типами областей.

  1. Внутренние области безопасности WL, например. noDeviceProvisioning, antiXSRF и т. д. Они исходят из среды аутентификации WL и имеют предопределенные жестко заданные имена областей. В случае этих областей аргумент (realmName) используется внутри WL-фреймворка.

  2. Все остальное, включая настраиваемые области аутентификации пользователей, шлюзы и все, что вы хотите. В этом случае разработчик не может зависеть от имени области, поскольку в некоторых случаях разработчик даже не может контролировать, как будет выглядеть вызов (например, шлюзы аутентификации). Поэтому вы можете указать любую строку в качестве параметра s realmName (она все равно будет проигнорирована) и использовать функцию isCustomResponse(), чтобы определить, принадлежит ли вызов определенной области.

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

person Anton    schedule 11.12.2013