diff --git a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/ServletAuthenticator.java b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/ServletAuthenticator.java index e48cc29..cd37da0 100644 --- a/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/ServletAuthenticator.java +++ b/impl/extension/servlet/src/main/java/br/gov/frameworkdemoiselle/security/ServletAuthenticator.java @@ -65,11 +65,14 @@ public class ServletAuthenticator implements Authenticator { @Override public void authenticate() throws AuthenticationException { try { - if (getRequest().getUserPrincipal() == null) { - getRequest().login(getCredentials().getUsername(), getCredentials().getPassword()); - } + getRequest().login(getCredentials().getUsername(), getCredentials().getPassword()); + } catch (ServletException cause) { - throw new AuthenticationException(getBundle().getString("authentication-failed"), cause); + if (cause.getMessage().contains("invalid")) { + throw new InvalidCredentialsException(getBundle().getString("invalid-credentials")); + } else { + throw new AuthenticationException(getBundle().getString("authentication-failed"), cause); + } } } diff --git a/impl/extension/servlet/src/main/resources/demoiselle-servlet-bundle.properties b/impl/extension/servlet/src/main/resources/demoiselle-servlet-bundle.properties index fb4f36f..59e36d6 100644 --- a/impl/extension/servlet/src/main/resources/demoiselle-servlet-bundle.properties +++ b/impl/extension/servlet/src/main/resources/demoiselle-servlet-bundle.properties @@ -34,4 +34,5 @@ # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. has-permission-not-supported=N\u00E3o \u00E9 poss\u00EDvel utilizar @{0}, pois esta funcionalidade n\u00E3o \u00E9 suportada pelo JAAS. +invalid-credentials=Usu\u00E1rio ou senha inv\u00E1lidos. authentication-failed=Falha no processo de autentica\u00E7\u00E3o. diff --git a/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java b/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java index 78cf981..fc5a5d6 100644 --- a/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java +++ b/impl/extension/servlet/src/test/java/security/authentication/form/HelperServlet.java @@ -2,13 +2,9 @@ package security.authentication.form; import static org.apache.http.HttpStatus.SC_EXPECTATION_FAILED; import static org.apache.http.HttpStatus.SC_FORBIDDEN; -import static org.apache.http.HttpStatus.SC_NOT_FOUND; import static org.apache.http.HttpStatus.SC_OK; import java.io.IOException; -import java.security.InvalidParameterException; -import java.util.regex.Matcher; -import java.util.regex.Pattern; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -26,14 +22,10 @@ public class HelperServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - String action = getAction(request); - - if ("login".equals(action)) { + if (request.getRequestURI().endsWith("/login")) { login(request, response); - } else if ("logout".equals(action)) { - logout(request, response); } else { - response.setStatus(SC_NOT_FOUND); + logout(request, response); } } @@ -74,15 +66,4 @@ public class HelperServlet extends HttpServlet { credentials.setUsername(request.getParameter("username")); credentials.setPassword(request.getParameter("password")); } - - private String getAction(HttpServletRequest request) { - Pattern pattern = Pattern.compile("^.+/(.+)$"); - Matcher matcher = pattern.matcher(request.getRequestURI()); - - if (matcher.matches()) { - return matcher.group(1).toLowerCase(); - } else { - throw new InvalidParameterException("Está faltando o parâmetro de ação na URL"); - } - } } diff --git a/impl/extension/servlet/src/test/resources/security/authentication/form/web.xml b/impl/extension/servlet/src/test/resources/security/authentication/form/web.xml index ac8afc4..a3a356a 100644 --- a/impl/extension/servlet/src/test/resources/security/authentication/form/web.xml +++ b/impl/extension/servlet/src/test/resources/security/authentication/form/web.xml @@ -56,6 +56,7 @@ Helper Servlet - /helper/* + /helper/login + /helper/logout \ No newline at end of file -- libgit2 0.21.2