WSO2IS NullPointerException при использовании пошагового аутентификатора

Иногда (?) пользователь WSO2 IS не может пройти аутентификацию со следующим исключением. При повторной попытке пользователь будет аутентифицирован. Любые идеи, что может быть причиной/разрешением? Настраиваем кеширование сессии.

Использование аутентификации WSO2 Identity Server 5.0.0.SP1/SAML с расширенным аутентификатором (один шаг, несколько вариантов). Я не могу найти правильную фиксацию исходного кода для проверки (чтобы она соответствовала номеру строки в исключении)

Заранее всем спасибо Габриэль

TID: [0] [IS] [2016-02-15 13:07:22,914] ОШИБКА {org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} — исключение в Authentication Framework { org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} java.lang.NullPointerException в org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler. handle(DefaultStepBasedSequenceHandler.java:83) в org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle(DefaultAuthenticationRequestHandler.java:121) в org.wso2.carbon.identity.application. authentication.framework.handler.request.impl.DefaultRequestCoordinator.handle(DefaultRequestCoordinator.java:94) в org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doPost(CommonAuthenticationServlet .java:54) в org.wso2.carbon.identity.application.authentication.framework.servlet.CommonAuthenticationServlet.doGet(CommonAuthenticationServlet.java:44) в javax.servlet.http.HttpServlet.service(HttpServlet.java:735) в javax.servlet.http.HttpServlet.service(HttpServlet.java:848)

Изменить:

Это исключение возникает и в WSO2 IS 5.1.0.

см. Исходный код строка 105

StepConfig stepConfig = context.getSequenceConfig().getStepMap().get(currentStep);

// if the current step is completed
if (stepConfig.isCompleted()) {
   stepConfig.setCompleted(false);

ERROR org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultRequestCoordinator} -  Exception in Authentication Framework 
java.lang.NullPointerException
    at org.wso2.carbon.identity.application.authentication.framework.handler.sequence.impl.DefaultStepBasedSequenceHandler.handle(DefaultStepBasedSequenceHandler.java:105)
    at org.wso2.carbon.identity.application.authentication.framework.handler.request.impl.DefaultAuthenticationRequestHandler.handle(DefaultAuthenticationRequestHandler.java:115)

похоже, что stepConfig «исчез» из конфигурации аутентификации. Настройка выполняется на одном узле с сохранением сеанса в базе данных.


person gusto2    schedule 15.02.2016    source источник
comment
Есть ли какие-либо настройки в этой настройке? Если да, то какие?   -  person drox    schedule 13.04.2016
comment
Существует набор «Аутентификатор Andvanced», где за один шаг пользователь может выбрать аутентификацию с использованием IWA или федеративного SAML IdP. БД среды - это postgresql, перенесенный из WSO2 IS 5.0.0.SP1 в 5.1.0 (проблема возникает в обеих версиях, после некоторой отладки кажется, что currentStep получает значение 2, где определен только один шаг). Действительно, я не могу воспроизвести проблему локально, она может зависеть от чего-то, о чем я не знаю.   -  person gusto2    schedule 13.04.2016


Ответы (1)


Судя по всему, это похоже на проблему параллелизма.

Когда на конечную точку SSO отправляется несколько одновременных запросов, когда пользователь уже прошел проверку подлинности, все потоки пытаются обработать запрос, изменяя один и тот же объект контекста проверки подлинности (счетчик currentStep), поэтому кэшированный контекст проверки подлинности переходит в недопустимое состояние.

Допустимым вариантом использования является то, что клиент должен отправить только один запрос на конечную точку SSO, поэтому команда, занимающаяся пользовательским интерфейсом, должна это исправить. Но это только быстрое решение, которое не предотвращает проблему в долгосрочной перспективе. Нам действительно нужно разобраться с WSO2 (и, возможно, самим исправить код) :)

g.

person gusto2    schedule 15.04.2016