btw, the attached file doesn't work with the Syncope client (I forgot to set
the contentType in the response header I think)
Le vendredi 15 septembre 2017 à 17:12:17 UTC+2, Adrian Gonzalez
<[email protected]> a écrit :
Hi Francesco,
I'll try something - not sure if next week or the one after.In the meantime
I've quickly developed this class (attached).
It really needs more polishing: - I'd like to do a bridge to
RestServiceExceptionMapper so we have a central place for error handlig (but
it's JAX-RS and I'm at servlet layer here). - I'd need to add types and codes
in ClientExceptionType - I'd need to add the same customisation for
syncopeAccessDeniedHandler
Thanks,Adrian
Le vendredi 15 septembre 2017 à 15:28:56 UTC+2, Francesco Chicchiriccò
<[email protected]> a écrit :
On 15/09/2017 15:17, Adrian Gonzalez wrote:
Hello,
I'm using Syncope 2.0.5. I'm calling /self REST API with invalid credentials
(withcontent-type: application/json .) /self returns HTML code and not a JSON
message body.
i.e. ```
curl -X GET \ http://localhost:9080/syncope/rest/users/self \ -H
'authorization: Basic YmVsbGluaTpiZWxsaW5pNjY1' \ -H 'cache-control:
no-cache' \ -H 'content-type: application/json' \ -H 'postman-token:
477ebc5a-6350-4ba5-a8a2-4d6ecea31712' ```
Returns an HTML error page i.e; <!doctype html><html
lang="en"><head><title>HTTP Status 401 – Unauthorized</title>...<b>Message</b>
User bellini not authenticated</p><p><b>Description</b> The request has not
been applied because it lacks valid authentication credentials for the target
resource.</p><hr class="line" /><h3>Apache Tomcat/8.5.20</h3></body></html>
Shouldn't it be valid json (since I requested json ?)
The pb is that when I use the syncope client REST API, I get: 2017-09-15
11:17:13.625 -ERROR [http-apr-9080-exec-6]
org.apache.cxf.jaxrs.utils.JAXRSUtils : No message body reader has been
found for class java.util.List, ContentType: text/html;charset=utf-8 2017-09-15
11:17:13.626 -DEBUG [http-apr-9080-exec-6]
o.a.s.c.lib.RestClientExceptionMapper : Could not read
org.apache.syncope.common.lib.to.ErrorTO list, attempting to read headers...
javax.ws.rs.client.ResponseProcessingException: No message body reader has been
found for class java.util.List, ContentType: text/html;charset=utf-8
atorg.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:439)
atorg.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:390)
at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:326) at
org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:314)
atorg.apache.syncope.client.lib.RestClientExceptionMapper.checkSyncopeClientCompositeException(RestClientExceptionMapper.java:98)
atorg.apache.syncope.client.lib.RestClientExceptionMapper.fromResponse(RestClientExceptionMapper.java:53)
atorg.apache.syncope.client.lib.RestClientExceptionMapper.fromResponse(RestClientExceptionMapper.java:42)
atorg.apache.cxf.jaxrs.client.ClientProxyImpl.checkResponse(ClientProxyImpl.java:313)
atorg.apache.cxf.jaxrs.client.ClientProxyImpl.handleResponse(ClientProxyImpl.java:876)
atorg.apache.cxf.jaxrs.client.ClientProxyImpl.doChainedInvocation(ClientProxyImpl.java:789)
atorg.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:235)
at com.sun.proxy.$Proxy641.read(Unknown Source) at
org.apache.syncope.client.lib.SyncopeClient.self(SyncopeClient.java:132)
Should we modifythe
org.apache.syncope.core.spring.security.SyncopeBasicAuthenticationEntryPoint ?
(not super because we'd need to handle manually XML and JSON formatting)
Hi Adrian,
your proposal makes sense but I remember (not well enough, unfortunately) that
there were some related issues when attempting to change the
AuthenticationEntryPoint due to some Spring Security internals.
Anyway, your contribution is more than welcome, as usual!
Regards.
--
Francesco Chicchiriccò
Tirasa - Open Source Excellence
http://www.tirasa.net/
Member at The Apache Software Foundation
Syncope, Cocoon, Olingo, CXF, OpenJPA, PonyMail
http://home.apache.org/~ilgrosso/