Commit 7f7dc517c5e2ecfbc149573cf446affd6b2379e6
1 parent
cc27007b
Exists in
master
Organização do fonte.
Showing
7 changed files
with
120 additions
and
164 deletions
Show diff stats
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/proxy/auth.js
@@ -17,7 +17,7 @@ var AuthProxy = { | @@ -17,7 +17,7 @@ var AuthProxy = { | ||
17 | url : this.url, | 17 | url : this.url, |
18 | type : "GET", | 18 | type : "GET", |
19 | beforeSend : function(request) { | 19 | beforeSend : function(request) { |
20 | - request.setRequestHeader("Authorization", App.getToken()); | 20 | + App.setHeader(request) |
21 | } | 21 | } |
22 | }); | 22 | }); |
23 | } | 23 | } |
archetype/html-rest/src/main/resources/archetype-resources/src/main/webapp/js/proxy/bookmark.js
@@ -7,7 +7,7 @@ var BookmarkProxy = { | @@ -7,7 +7,7 @@ var BookmarkProxy = { | ||
7 | type : "GET", | 7 | type : "GET", |
8 | url : this.url, | 8 | url : this.url, |
9 | beforeSend : function(request) { | 9 | beforeSend : function(request) { |
10 | - request.setRequestHeader("Authorization", App.getToken()); | 10 | + App.setHeader(request) |
11 | } | 11 | } |
12 | }); | 12 | }); |
13 | }, | 13 | }, |
@@ -17,7 +17,7 @@ var BookmarkProxy = { | @@ -17,7 +17,7 @@ var BookmarkProxy = { | ||
17 | type : "GET", | 17 | type : "GET", |
18 | url : this.url + "/" + $id, | 18 | url : this.url + "/" + $id, |
19 | beforeSend : function(request) { | 19 | beforeSend : function(request) { |
20 | - request.setRequestHeader("Authorization", App.getToken()); | 20 | + App.setHeader(request) |
21 | } | 21 | } |
22 | }); | 22 | }); |
23 | }, | 23 | }, |
@@ -29,7 +29,7 @@ var BookmarkProxy = { | @@ -29,7 +29,7 @@ var BookmarkProxy = { | ||
29 | data : JSON.stringify($data), | 29 | data : JSON.stringify($data), |
30 | contentType : "application/json", | 30 | contentType : "application/json", |
31 | beforeSend : function(request) { | 31 | beforeSend : function(request) { |
32 | - request.setRequestHeader("Authorization", App.getToken()); | 32 | + App.setHeader(request) |
33 | } | 33 | } |
34 | }); | 34 | }); |
35 | }, | 35 | }, |
@@ -41,7 +41,7 @@ var BookmarkProxy = { | @@ -41,7 +41,7 @@ var BookmarkProxy = { | ||
41 | data : JSON.stringify($data), | 41 | data : JSON.stringify($data), |
42 | contentType : "application/json", | 42 | contentType : "application/json", |
43 | beforeSend : function(request) { | 43 | beforeSend : function(request) { |
44 | - request.setRequestHeader("Authorization", App.getToken()); | 44 | + App.setHeader(request) |
45 | } | 45 | } |
46 | }); | 46 | }); |
47 | }, | 47 | }, |
@@ -53,7 +53,7 @@ var BookmarkProxy = { | @@ -53,7 +53,7 @@ var BookmarkProxy = { | ||
53 | data : JSON.stringify($ids), | 53 | data : JSON.stringify($ids), |
54 | contentType : "application/json", | 54 | contentType : "application/json", |
55 | beforeSend : function(request) { | 55 | beforeSend : function(request) { |
56 | - request.setRequestHeader("Authorization", App.getToken()); | 56 | + App.setHeader(request) |
57 | } | 57 | } |
58 | }); | 58 | }); |
59 | } | 59 | } |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/internal/implementation/ParseExceptionMapper.java
1 | -package br.gov.frameworkdemoiselle.internal.implementation; | ||
2 | - | ||
3 | -import java.util.Arrays; | ||
4 | -import java.util.HashSet; | ||
5 | -import java.util.ResourceBundle; | ||
6 | -import java.util.Set; | ||
7 | - | ||
8 | -import javax.ws.rs.core.Response; | ||
9 | -import javax.ws.rs.ext.ExceptionMapper; | ||
10 | -import javax.ws.rs.ext.Provider; | ||
11 | - | ||
12 | -import org.slf4j.Logger; | ||
13 | - | ||
14 | -import br.gov.frameworkdemoiselle.util.Beans; | ||
15 | -import br.gov.frameworkdemoiselle.util.NameQualifier; | ||
16 | - | ||
17 | -@Provider | ||
18 | -public class ParseExceptionMapper implements ExceptionMapper<Throwable> { | ||
19 | - | ||
20 | - private transient ResourceBundle bundle; | ||
21 | - | ||
22 | - private transient Logger logger; | ||
23 | - | ||
24 | - private Set<Class<?>> getTypes(Class<?> target) { | ||
25 | - Set<Class<?>> classesInterfaces = new HashSet<Class<?>>(); | ||
26 | - classesInterfaces.add(target); | ||
27 | - classesInterfaces.addAll(Arrays.asList(target.getInterfaces())); | ||
28 | - | ||
29 | - Class<?> superClass = target.getSuperclass(); | ||
30 | - | ||
31 | - if (superClass != null) { | ||
32 | - classesInterfaces.add(superClass); | ||
33 | - classesInterfaces.addAll(getTypes(superClass)); | ||
34 | - } | ||
35 | - | ||
36 | - return classesInterfaces; | ||
37 | - } | ||
38 | - | ||
39 | - @Override | ||
40 | - public Response toResponse(Throwable exception) { | ||
41 | - | ||
42 | - // Throwable original = exception; | ||
43 | - // | ||
44 | - // while (exception != null) { | ||
45 | - // System.out.println("xxxxxxxxxxxxxxxxxxxxxx : " + exception.getClass().getCanonicalName()); | ||
46 | - // | ||
47 | - // exception = exception.getCause(); | ||
48 | - // } | ||
49 | - // | ||
50 | - // exception = original; | ||
51 | - // | ||
52 | - // Class<> | ||
53 | - // | ||
54 | - // while (exception != null) { | ||
55 | - // System.out.println("xxxxxxxxxxxxxxxxxxxxxx : " + exception.getClass().getIgetCanonicalName()); | ||
56 | - // | ||
57 | - // exception.getClass().getSuperclass(); | ||
58 | - // | ||
59 | - // exception = exception.getP; | ||
60 | - // } | ||
61 | - | ||
62 | - for (Class<?> type : getTypes(exception.getClass())) { | ||
63 | - | ||
64 | - System.out.println("___________________ " + type.getCanonicalName()); | ||
65 | - | ||
66 | - if (type.getCanonicalName().toLowerCase().indexOf("unrecognized") > -1) { | ||
67 | - getLogger().error("XXXXXXXXXXXXXX", exception); | ||
68 | - return Response.status(400).build(); | ||
69 | - } | ||
70 | - } | ||
71 | - | ||
72 | - // System.out.println("xxxxxxxxxxxxxx : " + getTypes(exception.getClass())); | ||
73 | - | ||
74 | - // if (exception.getMessage().toLowerCase().indexOf("unrecognized") > -1) { | ||
75 | - // getLogger().error("XXXXXXXXXXXXXX", exception); | ||
76 | - // return Response.status(400).build(); | ||
77 | - // } | ||
78 | - // | ||
79 | - throw new RuntimeException(exception); | ||
80 | - | ||
81 | - // return null; | ||
82 | - } | ||
83 | - | ||
84 | - private ResourceBundle getBundle() { | ||
85 | - if (bundle == null) { | ||
86 | - bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-rest-bundle")); | ||
87 | - } | ||
88 | - | ||
89 | - return bundle; | ||
90 | - } | ||
91 | - | ||
92 | - private Logger getLogger() { | ||
93 | - if (logger == null) { | ||
94 | - logger = Beans.getReference(Logger.class, new NameQualifier(ParseExceptionMapper.class.getName())); | ||
95 | - } | ||
96 | - | ||
97 | - return logger; | ||
98 | - } | ||
99 | -} | 1 | +//package br.gov.frameworkdemoiselle.internal.implementation; |
2 | +// | ||
3 | +//import java.util.Arrays; | ||
4 | +//import java.util.HashSet; | ||
5 | +//import java.util.ResourceBundle; | ||
6 | +//import java.util.Set; | ||
7 | +// | ||
8 | +//import javax.ws.rs.core.Response; | ||
9 | +//import javax.ws.rs.ext.ExceptionMapper; | ||
10 | +//import javax.ws.rs.ext.Provider; | ||
11 | +// | ||
12 | +//import org.slf4j.Logger; | ||
13 | +// | ||
14 | +//import br.gov.frameworkdemoiselle.util.Beans; | ||
15 | +//import br.gov.frameworkdemoiselle.util.NameQualifier; | ||
16 | +// | ||
17 | +//@Provider | ||
18 | +//public class ParseExceptionMapper implements ExceptionMapper<Throwable> { | ||
19 | +// | ||
20 | +// private transient ResourceBundle bundle; | ||
21 | +// | ||
22 | +// private transient Logger logger; | ||
23 | +// | ||
24 | +// private Set<Class<?>> getTypes(Class<?> target) { | ||
25 | +// Set<Class<?>> classesInterfaces = new HashSet<Class<?>>(); | ||
26 | +// classesInterfaces.add(target); | ||
27 | +// classesInterfaces.addAll(Arrays.asList(target.getInterfaces())); | ||
28 | +// | ||
29 | +// Class<?> superClass = target.getSuperclass(); | ||
30 | +// | ||
31 | +// if (superClass != null) { | ||
32 | +// classesInterfaces.add(superClass); | ||
33 | +// classesInterfaces.addAll(getTypes(superClass)); | ||
34 | +// } | ||
35 | +// | ||
36 | +// return classesInterfaces; | ||
37 | +// } | ||
38 | +// | ||
39 | +// @Override | ||
40 | +// public Response toResponse(Throwable exception) { | ||
41 | +// | ||
42 | +// // Throwable original = exception; | ||
43 | +// // | ||
44 | +// // while (exception != null) { | ||
45 | +// // System.out.println("xxxxxxxxxxxxxxxxxxxxxx : " + exception.getClass().getCanonicalName()); | ||
46 | +// // | ||
47 | +// // exception = exception.getCause(); | ||
48 | +// // } | ||
49 | +// // | ||
50 | +// // exception = original; | ||
51 | +// // | ||
52 | +// // Class<> | ||
53 | +// // | ||
54 | +// // while (exception != null) { | ||
55 | +// // System.out.println("xxxxxxxxxxxxxxxxxxxxxx : " + exception.getClass().getIgetCanonicalName()); | ||
56 | +// // | ||
57 | +// // exception.getClass().getSuperclass(); | ||
58 | +// // | ||
59 | +// // exception = exception.getP; | ||
60 | +// // } | ||
61 | +// | ||
62 | +// for (Class<?> type : getTypes(exception.getClass())) { | ||
63 | +// | ||
64 | +// System.out.println("___________________ " + type.getCanonicalName()); | ||
65 | +// | ||
66 | +// if (type.getCanonicalName().toLowerCase().indexOf("unrecognized") > -1) { | ||
67 | +// getLogger().error("XXXXXXXXXXXXXX", exception); | ||
68 | +// return Response.status(400).build(); | ||
69 | +// } | ||
70 | +// } | ||
71 | +// | ||
72 | +// exception.printStackTrace(); | ||
73 | +// | ||
74 | +// return null; | ||
75 | +// } | ||
76 | +// | ||
77 | +// private ResourceBundle getBundle() { | ||
78 | +// if (bundle == null) { | ||
79 | +// bundle = Beans.getReference(ResourceBundle.class, new NameQualifier("demoiselle-rest-bundle")); | ||
80 | +// } | ||
81 | +// | ||
82 | +// return bundle; | ||
83 | +// } | ||
84 | +// | ||
85 | +// private Logger getLogger() { | ||
86 | +// if (logger == null) { | ||
87 | +// logger = Beans.getReference(Logger.class, new NameQualifier(ParseExceptionMapper.class.getName())); | ||
88 | +// } | ||
89 | +// | ||
90 | +// return logger; | ||
91 | +// } | ||
92 | +//} |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/security/AbstractHTTPAuthorizationFilter.java
@@ -75,34 +75,6 @@ public abstract class AbstractHTTPAuthorizationFilter implements Filter { | @@ -75,34 +75,6 @@ public abstract class AbstractHTTPAuthorizationFilter implements Filter { | ||
75 | } else { | 75 | } else { |
76 | chain.doFilter(request, response); | 76 | chain.doFilter(request, response); |
77 | } | 77 | } |
78 | - | ||
79 | - // boolean processed = false; | ||
80 | - // | ||
81 | - // if (request instanceof HttpServletRequest) { | ||
82 | - // HttpServletRequest httpRequest = (HttpServletRequest) request; | ||
83 | - // HttpServletResponse httpResponse = (HttpServletResponse) response; | ||
84 | - // | ||
85 | - // String authHeader = getAuthHeader(httpRequest); | ||
86 | - // String httpCredentials = extractCredentials(authHeader); | ||
87 | - // | ||
88 | - // RESTSecurityConfig config = Beans.getReference(RESTSecurityConfig.class); | ||
89 | - // if (isActive(config) && isSupported(httpCredentials)) { | ||
90 | - // processed = true; | ||
91 | - // | ||
92 | - // try { | ||
93 | - // performLogin(httpCredentials, httpRequest, httpResponse); | ||
94 | - // chain.doFilter(httpRequest, httpResponse); | ||
95 | - // performLogout(httpCredentials, httpRequest, httpResponse); | ||
96 | - // | ||
97 | - // } catch (InvalidCredentialsException cause) { | ||
98 | - // setUnauthorizedStatus(httpResponse, cause); | ||
99 | - // } | ||
100 | - // } | ||
101 | - // } | ||
102 | - // | ||
103 | - // if (!processed) { | ||
104 | - // chain.doFilter(request, response); | ||
105 | - // } | ||
106 | } | 78 | } |
107 | 79 | ||
108 | protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) | 80 | protected void doFilter(HttpServletRequest request, HttpServletResponse response, FilterChain chain) |
@@ -176,7 +148,7 @@ public abstract class AbstractHTTPAuthorizationFilter implements Filter { | @@ -176,7 +148,7 @@ public abstract class AbstractHTTPAuthorizationFilter implements Filter { | ||
176 | 148 | ||
177 | private void setUnauthorizedStatus(HttpServletResponse response, AuthenticationException cause) throws IOException { | 149 | private void setUnauthorizedStatus(HttpServletResponse response, AuthenticationException cause) throws IOException { |
178 | response.setStatus(SC_UNAUTHORIZED); | 150 | response.setStatus(SC_UNAUTHORIZED); |
179 | - response.setContentType("text/plain"); | 151 | + response.setContentType("text/plain; charset=UTF-8"); |
180 | response.getWriter().write(cause.getMessage()); | 152 | response.getWriter().write(cause.getMessage()); |
181 | } | 153 | } |
182 | } | 154 | } |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/security/BasicAuthFilter.java
@@ -45,39 +45,38 @@ import br.gov.frameworkdemoiselle.util.Beans; | @@ -45,39 +45,38 @@ import br.gov.frameworkdemoiselle.util.Beans; | ||
45 | 45 | ||
46 | public class BasicAuthFilter extends AbstractHTTPAuthorizationFilter { | 46 | public class BasicAuthFilter extends AbstractHTTPAuthorizationFilter { |
47 | 47 | ||
48 | - private String credentials; | ||
49 | - | ||
50 | @Override | 48 | @Override |
51 | protected String getType() { | 49 | protected String getType() { |
52 | return "Basic"; | 50 | return "Basic"; |
53 | } | 51 | } |
54 | 52 | ||
55 | @Override | 53 | @Override |
56 | - protected boolean isActive() { | ||
57 | - return Beans.getReference(RESTSecurityConfig.class).isBasicFilterActive(); | ||
58 | - } | ||
59 | - | ||
60 | - @Override | ||
61 | - protected void performLogin(HttpServletRequest httpRequest, HttpServletResponse httpResponse) { | ||
62 | - String[] basicCredentials = getCredentials(credentials); | 54 | + protected void performLogin(HttpServletRequest request, HttpServletResponse response) { |
55 | + String[] decoded = decodeCredentials(request); | ||
63 | 56 | ||
64 | Credentials credentials = Beans.getReference(Credentials.class); | 57 | Credentials credentials = Beans.getReference(Credentials.class); |
65 | - credentials.setUsername(basicCredentials[0]); | ||
66 | - credentials.setPassword(basicCredentials[1]); | 58 | + credentials.setUsername(decoded[0]); |
59 | + credentials.setPassword(decoded[1]); | ||
67 | 60 | ||
68 | - super.performLogin(httpRequest, httpResponse); | 61 | + super.performLogin(request, response); |
69 | } | 62 | } |
70 | 63 | ||
71 | - private static String[] getCredentials(String header) throws InvalidCredentialsException { | 64 | + private String[] decodeCredentials(HttpServletRequest request) throws InvalidCredentialsException { |
72 | String[] result = null; | 65 | String[] result = null; |
73 | 66 | ||
74 | - byte[] decoded = Base64.decodeBase64(header); | 67 | + String authData = getAuthData(request); |
68 | + byte[] decoded = Base64.decodeBase64(authData); | ||
75 | result = new String(decoded).split(":"); | 69 | result = new String(decoded).split(":"); |
76 | 70 | ||
77 | if (result == null || result.length != 2) { | 71 | if (result == null || result.length != 2) { |
78 | - throw new InvalidCredentialsException("Formato inválido do cabeçalho"); | 72 | + throw new InvalidCredentialsException("formato inválido do cabeçalho"); |
79 | } | 73 | } |
80 | 74 | ||
81 | return result; | 75 | return result; |
82 | } | 76 | } |
77 | + | ||
78 | + @Override | ||
79 | + protected boolean isActive() { | ||
80 | + return Beans.getReference(RESTSecurityConfig.class).isBasicFilterActive(); | ||
81 | + } | ||
83 | } | 82 | } |
impl/extension/rest/src/main/java/br/gov/frameworkdemoiselle/security/TokenAuthFilter.java
@@ -66,11 +66,6 @@ public class TokenAuthFilter extends AbstractHTTPAuthorizationFilter { | @@ -66,11 +66,6 @@ public class TokenAuthFilter extends AbstractHTTPAuthorizationFilter { | ||
66 | } | 66 | } |
67 | 67 | ||
68 | @Override | 68 | @Override |
69 | - protected boolean isActive() { | ||
70 | - return Beans.getReference(RESTSecurityConfig.class).isTokenFilterActive(); | ||
71 | - } | ||
72 | - | ||
73 | - @Override | ||
74 | protected void performLogin(HttpServletRequest request, HttpServletResponse response) { | 69 | protected void performLogin(HttpServletRequest request, HttpServletResponse response) { |
75 | Token token = Beans.getReference(Token.class); | 70 | Token token = Beans.getReference(Token.class); |
76 | String authData = getAuthData(request); | 71 | String authData = getAuthData(request); |
@@ -79,12 +74,9 @@ public class TokenAuthFilter extends AbstractHTTPAuthorizationFilter { | @@ -79,12 +74,9 @@ public class TokenAuthFilter extends AbstractHTTPAuthorizationFilter { | ||
79 | super.performLogin(request, response); | 74 | super.performLogin(request, response); |
80 | } | 75 | } |
81 | 76 | ||
82 | - // public void setHeader(@Observes AfterLoginSuccessful event) { | ||
83 | - // Token token = Beans.getReference(Token.class); | ||
84 | - // | ||
85 | - // if (!token.isEmpty()) { | ||
86 | - // HttpServletResponse response = Beans.getReference(HttpServletResponse.class); | ||
87 | - // response.setHeader("Set-Token", token.getValue()); | ||
88 | - // } | ||
89 | - // } | 77 | + @Override |
78 | + protected boolean isActive() { | ||
79 | + return Beans.getReference(RESTSecurityConfig.class).isTokenFilterActive(); | ||
80 | + } | ||
81 | + | ||
90 | } | 82 | } |
impl/extension/servlet/src/main/resources/demoiselle-servlet-bundle.properties
@@ -33,5 +33,5 @@ | @@ -33,5 +33,5 @@ | ||
33 | # ou escreva para a Fundação do Software Livre (FSF) Inc., | 33 | # ou escreva para a Fundação do Software Livre (FSF) Inc., |
34 | # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. | 34 | # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. |
35 | 35 | ||
36 | -has-permission-not-supported=N\u00E3o \u00E9 poss\u00EDvel utilizar @{0}, pois esta funcionalidade n\u00E3o \u00E9 suportada pelo JAAS. | ||
37 | -authentication-failed=Falha no processo de autentica\u00E7\u00E3o. | 36 | +has-permission-not-supported=N\u00e3o \u00e9 poss\u00edvel utilizar @{0}, pois esta funcionalidade n\u00e3o \u00e9 suportada pelo JAAS. |
37 | +authentication-failed=Falha no processo de autentica\u00E7\u00E3o |