Я по-прежнему пытаюсь внедрить пользовательский модуль входа JASPIC для Wildfly 9. Если вход успешно завершен, все работает так, как ожидалось. Но я бы ожидал ответа HTTP 403, если логин не был успешным. Так что я написал этот маленький тест:JASPIC Войти с Wildfly 9 Отправить код возврата HTTP
@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? Или мне нужно создать этот код возврата другим способом?
а) 'FAILURE' для' ClientAuthModule's. «ValidateRequest» SAM (vr) может возвращать «SEND_FAILURE» или бросать «AuthException», чтобы указать на ошибку во время выполнения. b) Да, вы должны сами установить статус HTTP для ответа. То, что происходит в противном случае, не является стандартным и нелегко определить заранее, так как vr может быть вызван до 3 раз для одного запроса. c) Значения «AuthStatus» по своей сути не связаны с кодами состояния HTTP. Это, например, штраф, чтобы вернуть 'SEND_FAILURE' * и * подавать ответ« 200 »клиенту. d) рассмотреть возможность чтения спецификации; это намного понятнее, чем Javadocs. – Uux