<div dir="ltr">Great! Global CORS could be awesome and useful!<br><br><div>In general I&#39;m using API Key to use some security policies. My policies involves IP address white list, oauth integration with keycloak, and roles verification. Also, I used a validation about the number of requests filtered by IP Address to avoid DDoS or web crawlers.</div><div>So, there is some difficulties...</div><div><br></div><div>When I&#39;m using javascript and mobile apps, I don&#39;t know if would be possible to use the white list. I&#39;ve never tried to test that. but, using integration with keycloak gives me a security level, so that&#39;s ok to me!</div><div><br></div><div>Thanks for your answer!</div><div><br></div><div>Best Regards,</div><div><br></div><div>Celso Agra</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-10-02 17:40 GMT-03:00 Marc Savy <span dir="ltr">&lt;<a href="mailto:marc.savy@redhat.com" target="_blank">marc.savy@redhat.com</a>&gt;</span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is a good area of discussion.<br>
<br>
There are some caveats to the query parameters approach. Query params<br>
are sometimes stored in logs and other areas where you wouldn&#39;t want<br>
highly sensitive data being kept.<br>
<br>
I think in the Apiman API Key case it should be okay, but it depends<br>
on your use case:<br>
<br>
- The API Key is only to provide correlation between an inbound<br>
request and an Apiman Client; it doesn&#39;t really provide security. For<br>
example, you would generally still need to do OAuth2, JWT, BASIC or<br>
some other security mechanism over the top if you want &quot;real&quot; auth and<br>
authz.<br>
<br>
- The Apiman Gateway strips out the apikey query parameter (i.e. it<br>
doesn&#39;t get passed to the backend). However, if you terminate SSL<br>
before the Apiman Gateway then it might have a chance to be stored in<br>
some logs elsewhere.<br>
<br>
For example, using my echo service (just responds back with what it receives):<br>
<br>
}[msavy@mmbp apiman](list-prototype)$ curl -k<br>
&#39;<a href="https://localhost:8443/test/froofroo/9003?apikey=7ab94cd5-6d31-4ed0-ba8a-607b2cbe0bc9&amp;another=thing" rel="noreferrer" target="_blank">https://localhost:8443/test/<wbr>froofroo/9003?apikey=7ab94cd5-<wbr>6d31-4ed0-ba8a-607b2cbe0bc9&amp;<wbr>another=thing</a>&#39;<br>
{<br>
  &quot;method&quot; : &quot;GET&quot;,<br>
  &quot;resource&quot; : &quot;/a/b/c/?another=thing&quot;, (1)<br>
  &quot;uri&quot; : &quot;/a/b/c/&quot;,<br>
  &quot;headers&quot; : {<br>
    &quot;Transfer-Encoding&quot; : &quot;chunked&quot;,<br>
    &quot;Accept&quot; : &quot;*/*&quot;,<br>
    &quot;User-Agent&quot; : &quot;curl/7.54.0&quot;,<br>
    &quot;Host&quot; : &quot;localhost:9999&quot;<br>
  },<br>
  &quot;bodyLength&quot; : null,<br>
  &quot;bodySha1&quot; : null,<br>
  &quot;counter&quot; : 6<br>
<br>
(1) Notice that the apikey query parameter has not appeared in the<br>
echoed response<br>
<br>
<br>
As a fairly rough solution, perhaps we could allow people to<br>
additionally set a global CORS config on the Apiman Gateway (e.g. in<br>
your case where you control the entire gateway this could be a useful<br>
&#39;base case&#39;).<br>
<div class="HOEnZb"><div class="h5"><br>
On 2 October 2017 at 19:52, Celso Agra &lt;<a href="mailto:celso.agra@gmail.com">celso.agra@gmail.com</a>&gt; wrote:<br>
&gt; I understand!<br>
&gt;<br>
&gt; I got this conflict because part of my application is made in angular4.<br>
&gt; I&#39;m using apikey as a query param, but this was a question to me &quot;is this<br>
&gt; right put apikey as query param?&quot;<br>
&gt;<br>
&gt; I believe there is no problem leave this as query param, since url is also<br>
&gt; encrypted.<br>
&gt;<br>
&gt; Thanks for your attention Eric and Marc!<br>
&gt;<br>
&gt;<br>
&gt; 2017-10-02 15:22 GMT-03:00 Marc Savy &lt;<a href="mailto:marc.savy@redhat.com">marc.savy@redhat.com</a>&gt;:<br>
&gt;&gt;<br>
&gt;&gt; Correction:<br>
&gt;&gt;<br>
&gt;&gt; I think that we can provide full functionality in all<br>
&gt;&gt; circumstances.<br>
&gt;&gt;<br>
&gt;&gt; I think that we *cannot* provide full functionality in all<br>
&gt;&gt; circumstances.<br>
&gt;&gt;<br>
&gt;&gt; On 2 October 2017 at 19:21, Marc Savy &lt;<a href="mailto:marc.savy@redhat.com">marc.savy@redhat.com</a>&gt; wrote:<br>
&gt;&gt; &gt; I seem to recall another annoying knot: as you can&#39;t set any custom<br>
&gt;&gt; &gt; headers on a preflight request itself in most browsers (any?),<br>
&gt;&gt; &gt; reaching the correct CORS policy is impossible when putting the<br>
&gt;&gt; &gt; X-API-Key in the header. This probably explains why people like Google<br>
&gt;&gt; &gt; require it to be a query parameter.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Therefore, unless we encoded that information in the URL itself (seems<br>
&gt;&gt; &gt; a bad idea) I think that we can provide full functionality in all<br>
&gt;&gt; &gt; circumstances.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; Unless someone else thinks I&#39;m wrong? Happy to hear alternative<br>
&gt;&gt; &gt; theories.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; On 2 October 2017 at 19:07, Celso Agra &lt;<a href="mailto:celso.agra@gmail.com">celso.agra@gmail.com</a>&gt; wrote:<br>
&gt;&gt; &gt;&gt; I attached an image. Also I added different kinds of headers, just to<br>
&gt;&gt; &gt;&gt; pass<br>
&gt;&gt; &gt;&gt; in case of &quot;Camel Case&quot; validation<br>
&gt;&gt; &gt;&gt; Unfortunately the CORS validation still occurs when I use the plugin...<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; 2017-10-02 15:00 GMT-03:00 Marc Savy &lt;<a href="mailto:marc.savy@redhat.com">marc.savy@redhat.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; This is from memory, but no, I don&#39;t think so: the API key is needed<br>
&gt;&gt; &gt;&gt;&gt; before the correct policy chain (including CORS policy) can be<br>
&gt;&gt; &gt;&gt;&gt; resolved.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; The CORS protocol, when using a custom header, requires a preflight<br>
&gt;&gt; &gt;&gt;&gt; request, however the preflight does not allow any custom headers to be<br>
&gt;&gt; &gt;&gt;&gt; set, so we can&#39;t currently resolve the correct policy chain.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; We could think about specifically making X-API-Key available for<br>
&gt;&gt; &gt;&gt;&gt; preflight as I think that should always be okay, but I&#39;ll have to<br>
&gt;&gt; &gt;&gt;&gt; investigate whether there are any downsides.<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; Of course, we could continue saying to use a query param in that<br>
&gt;&gt; &gt;&gt;&gt; scenario!<br>
&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; On 2 October 2017 at 18:37, Eric Wittmann &lt;<a href="mailto:eric.wittmann@redhat.com">eric.wittmann@redhat.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt; Just to be clear - if X-API-Key is added as an allowed CORS header<br>
&gt;&gt; &gt;&gt;&gt; &gt; in<br>
&gt;&gt; &gt;&gt;&gt; &gt; the<br>
&gt;&gt; &gt;&gt;&gt; &gt; CORS plugin configuration, does that solve the issue?<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; -Eric<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; On Mon, Oct 2, 2017 at 1:17 PM, Celso Agra &lt;<a href="mailto:celso.agra@gmail.com">celso.agra@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; So, there is no prob to pass as query param!<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Thanks Marc<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Best Regards,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Celso Agra<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; 2017-10-02 13:49 GMT-03:00 Marc Savy &lt;<a href="mailto:marc.savy@redhat.com">marc.savy@redhat.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Hi Celso,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; The query string is encrypted with SSL/TLS.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; Marc<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; On 2 October 2017 at 17:40, Celso Agra &lt;<a href="mailto:celso.agra@gmail.com">celso.agra@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Yeah! It is! My concern is because I&#39;m passing the apiKey as a<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; query<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; param.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; I don&#39;t know if requests works like this in ssl requests, but I<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; believe<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; that query params can be viewed if you have a sniffer, unlike<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; header<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; params.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; So, I&#39;m probably have to allow X-API-Key header in Apiman<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; requests.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Would be possible to add this feature in a plugin or maybe in the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Apiman?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; I&#39;ll take a look in some classes to know how to do that.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; I&#39;d like to know if it is a feature that will contribute with the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; project.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Thanks for your answer Marc.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Best Regards,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Celso Agra<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; 2017-10-02 9:18 GMT-03:00 Marc Savy &lt;<a href="mailto:marc.savy@redhat.com">marc.savy@redhat.com</a>&gt;:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; If I understand your questions correctly: by default CORS does<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; not<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; allow any custom headers to be sent in the request. This means<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; that<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; Apiman<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; does not receive the X-API-Key header and necessarily can&#39;t<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; figure<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; out how<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; to route the request. The same CORS restriction does not exist<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; with<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; query<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; parameters so if you provide it with the query param you&#39;ll be<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; okay.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; Perhaps a (partial) solution to some of these kinds of CORS<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; issues<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; is<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; for Apiman to always indicate that the X-API-Key header is<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; allowed.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; Regards,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; Marc<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; On 27 September 2017 at 05:35, Celso Agra &lt;<a href="mailto:celso.agra@gmail.com">celso.agra@gmail.com</a>&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt; wrote:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Hi all,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; I got some errors with CORS plugin when I try to use my API<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; with a<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; contract.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; So, I consume my API passing info through header, such as:<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Authorization, Content-Type, and X-API-Key.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; I&#39;m talking about a javascript application. So, CORS is a<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; problem<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; for<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; that language.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; When I configure my contract to allow Cross-Origin, the error<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; still<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; there, but if I put my X-API-Key, as a query parameter, the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; CORS<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; works fine.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Does anyone could help me to understand that?<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; I&#39;m concerned to pass my contract as a query parameter. It<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; should<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; be<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; on Header of my Http Request.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Please, help me to understand if it is a behaviour of the<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; application<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; and how can I solve this without use query param.<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Best Regards,<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; ---<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Celso Agra<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; Apiman-user mailing list<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; <a href="mailto:Apiman-user@lists.jboss.org">Apiman-user@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/apiman-user" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/apiman-user</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; ---<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;&gt; Celso Agra<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; ---<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Celso Agra<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; ______________________________<wbr>_________________<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; Apiman-user mailing list<br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="mailto:Apiman-user@lists.jboss.org">Apiman-user@lists.jboss.org</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/apiman-user" rel="noreferrer" target="_blank">https://lists.jboss.org/<wbr>mailman/listinfo/apiman-user</a><br>
&gt;&gt; &gt;&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;&gt; &gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt;<br>
&gt;&gt; &gt;&gt; --<br>
&gt;&gt; &gt;&gt; ---<br>
&gt;&gt; &gt;&gt; Celso Agra<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; ---<br>
&gt; Celso Agra<br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><span style="font-family:&#39;Times New Roman&#39;;font-size:16px">---<br><b>Celso Agra</b></span></div></div></div></div></div>
</div>