diff --git a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/security/BasicAuthFilter.java b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/security/BasicAuthFilter.java
index 681f3c6..05339f6 100644
--- a/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/security/BasicAuthFilter.java
+++ b/impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/security/BasicAuthFilter.java
@@ -36,98 +36,41 @@
*/
package br.gov.frameworkdemoiselle.security;
-import static javax.servlet.http.HttpServletResponse.SC_UNAUTHORIZED;
-
-import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
import org.apache.commons.codec.binary.Base64;
-import br.gov.frameworkdemoiselle.security.AuthenticationException;
-import br.gov.frameworkdemoiselle.security.Credentials;
-import br.gov.frameworkdemoiselle.security.InvalidCredentialsException;
-import br.gov.frameworkdemoiselle.security.SecurityContext;
import br.gov.frameworkdemoiselle.util.Beans;
+import br.gov.frameworkdemoiselle.util.Strings;
-public class BasicAuthFilter implements Filter {
+public class BasicAuthFilter extends AbstractHTTPAuthorizationFilter {
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- }
+ private String header;
@Override
- public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
- ServletException {
-// if (request instanceof HttpServletRequest && ((HttpServletRequest) request).getUserPrincipal() == null) {
-// tryLogin((HttpServletRequest) request, (HttpServletResponse) response, chain);
-// } else {
- chain.doFilter(request, response);
-// }
- }
-
- private void tryLogin(HttpServletRequest request, HttpServletResponse response, FilterChain chain)
- throws IOException, ServletException {
- try {
- boolean isLoggedIn = performLogin(getAuthHeader(request), request);
-
- chain.doFilter(request, response);
-
- if (isLoggedIn) {
- performLogout();
- }
-
- } catch (InvalidCredentialsException cause) {
- setUnauthorizedStatus(response, cause);
- }
+ protected boolean isSupported(String authHeader) {
+ header = authHeader;
+ return !Strings.isEmpty(header);
}
- private boolean performLogin(String header, HttpServletRequest request) {
- boolean result = false;
- SecurityContext securityContext = Beans.getReference(SecurityContext.class);
-
+ @Override
+ protected void prepareForLogin() {
if (header != null) {
String[] basicCredentials = getCredentials(header);
Credentials credentials = Beans.getReference(Credentials.class);
credentials.setUsername(basicCredentials[0]);
credentials.setPassword(basicCredentials[1]);
-
- securityContext.login();
- result = securityContext.isLoggedIn();
}
-
- return result;
}
- private void performLogout() {
- Beans.getReference(SecurityContext.class).logout();
- }
-
- private void setUnauthorizedStatus(HttpServletResponse response, AuthenticationException cause) throws IOException {
- response.setStatus(SC_UNAUTHORIZED);
- response.setContentType("text/html");
-
- response.getWriter().write(cause.getMessage());
- response.getWriter().flush();
- response.getWriter().close();
- }
-
- private String getAuthHeader(HttpServletRequest request) {
- String result = request.getHeader("Authorization");
- return (result == null ? request.getHeader("authorization") : result);
+ @Override
+ protected void prepareForLogout() {
}
- private static String[] getCredentials(String header) throws InvalidCredentialsException {
+ private static String[] getCredentials(String header)
+ throws InvalidCredentialsException {
String[] result = null;
String regexp = "^Basic[ \\n]+(.+)$";
@@ -140,13 +83,11 @@ public class BasicAuthFilter implements Filter {
}
if (result == null || result.length != 2) {
- throw new InvalidCredentialsException("Formato inválido do cabeçalho");
+ throw new InvalidCredentialsException(
+ "Formato inválido do cabeçalho");
}
return result;
}
- @Override
- public void destroy() {
- }
-}
+}
\ No newline at end of file
diff --git a/impl/extension/rest/src/main/resources/META-INF/web-fragment.xml b/impl/extension/rest/src/main/resources/META-INF/web-fragment.xml
index 6b5149a..f419b17 100644
--- a/impl/extension/rest/src/main/resources/META-INF/web-fragment.xml
+++ b/impl/extension/rest/src/main/resources/META-INF/web-fragment.xml
@@ -41,6 +41,15 @@
demoiselle_rest
+ Demoiselle BasicAuth Filter
+ br.gov.frameworkdemoiselle.security.BasicAuthFilter
+
+
+ Demoiselle BasicAuth Filter
+ /*
+
+
+
Demoiselle Token Auth Filter
br.gov.frameworkdemoiselle.security.TokenAuthFilter
--
libgit2 0.21.2