JASPIC Войти через Wildfly 9 Отправить HTTP код возврата

Я все еще пытаюсь реализовать пользовательский модуль входа в систему JASPIC для Wildfly 9. Если вход выполнен успешно, все работает как положено. Но я бы ожидал ответа HTTP 403, если вход не будет успешным. Итак, я написал этот маленький тест:

@Test
public void invalidCredentials() throws IOException, SAXException {
    try {
        WebConversation webConversation = new WebConversation();
        GetMethodWebRequest request = new GetMethodWebRequest(deployUrl + "LoginServlet");
        request.setParameter("token", "invalid");
        WebResponse response = webConversation.getResponse(request);
        fail("Got " + response.getResponseCode() + " expected 403!");
    } catch (final HttpException e) {
        assertEquals(403, e.getResponseCode());
    }
}

Результат таков:

Failed tests: 
    JaspicLoginTest.invalidCredentials:114 Got 200 expected 403!

Я попробовал это три варианта, чтобы закончить метод validateRequest из ServerAuthModule после неверной аутентификации:

return AuthStatus.SEND_FAILURE;
return AuthStatus.FAILURE;
throw new AuthException();

Но ничего из вышеперечисленного не дает HTTP-ответ об ошибке аутентификации (403). Это снова ошибка с Wildfly? Или я должен произвести этот код возврата другим способом?

1 ответ

Хорошо, очевидно, что можно взять объект MessageInfo и сделать так:

public AuthStatus validateRequest(MessageInfo messageInfo, 
                                  Subject clientSubject, 
                                  Subject serviceSubject) throws AuthException{
    //Invalid case:
    HttpServletResponse response =
                        (HttpServletResponse) messageInfo.getResponseMessage();
    response.setStatus(HttpServletResponse.SC_FORBIDDEN);
    return AuthStatus.SEND_FAILURE;
}
Другие вопросы по тегам