<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jun 20, 2013, at 10:34 AM, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Jun 20, 2013 at 5:32 PM, Kris Borchers <span dir="ltr">&lt;<a href="mailto:kris@redhat.com" target="_blank">kris@redhat.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>
On Jun 20, 2013, at 10:28 AM, Bruno Oliveira &lt;<a href="mailto:bruno@abstractj.org">bruno@abstractj.org</a>&gt; wrote:<br>
<br>
&gt; Just one addition <a href="http://tools.ietf.org/html/rfc2617#section-4" target="_blank">http://tools.ietf.org/html/rfc2617#section-4</a><br>
<br>
</div>Right … even on the iOS and Android side of things, it is still very easy to "decrypt" a base64 encoded string. Using HTTPS would help but that is not foolproof either so we may want to think of some other method.<br>
</blockquote><div><br></div><div><br></div><div style="">sure &nbsp;- and nothing new here :)&nbsp;</div><div style="">But better than nothing, for now&nbsp;<br></div></div></div></div></blockquote><div><br></div>Not sure I agree … seems like a waste if we know we won't use it in the future. Might as well have Bruno working on something real and get that in for August rather than just sitting on something that isn't right.<br><blockquote type="cite"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>&nbsp;</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div class="HOEnZb"><div class="h5">&gt;<br>
&gt; Bruno Oliveira wrote:<br>
&gt;&gt; Don't feel safe because you're doing something with Base64 or using<br>
&gt;&gt; basic authentication. It doesn't guarantee safety, the HTTP Basic<br>
&gt;&gt; Authentication scheme is not considered a secure method without TLS/SSL,<br>
&gt;&gt; because username and password are passed over the network in cleartext.<br>
&gt;&gt;<br>
&gt;&gt; For this reason we will replace it with Digest or Hawk into the near<br>
&gt;&gt; future.<br>
&gt;&gt;<br>
&gt;&gt; Matthias Wessendorf wrote:<br>
&gt;&gt;&gt; Hi,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; with the use of this helper<br>
&gt;&gt;&gt; &lt;<a href="https://github.com/davidchambers/Base64.js" target="_blank">https://github.com/davidchambers/Base64.js</a>&gt;, it is "safe" (I think) to<br>
&gt;&gt;&gt; use the |window.btoa| function(see details<br>
&gt;&gt;&gt; &lt;<a href="https://developer.mozilla.org/en-US/docs/Web/API/window.btoa" target="_blank">https://developer.mozilla.org/en-US/docs/Web/API/window.btoa</a>&gt;), to<br>
&gt;&gt;&gt; perform a (simple) Base64 encoding.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Base64 encoding is required, since the "Device Registration" HTTP REST<br>
&gt;&gt;&gt; endpoint now uses HTTP_Basic (for details see the matching thread<br>
&gt;&gt;&gt; &lt;<a href="http://lists.jboss.org/pipermail/aerogear-dev/2013-June/003233.html" target="_blank">http://lists.jboss.org/pipermail/aerogear-dev/2013-June/003233.html</a>&gt;).<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Currently we perform this code for "channel registration":<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; |$.ajax({<br>
&gt;&gt;&gt; contentType:"application/json",<br>
&gt;&gt;&gt; dataType:"json",<br>
&gt;&gt;&gt; type:"POST",<br>
&gt;&gt;&gt; url: url,<br>
&gt;&gt;&gt; headers: {<br>
&gt;&gt;&gt; "ag-mobile-variant": variantID<br>
&gt;&gt;&gt; },<br>
&gt;&gt;&gt; data: JSON.stringify({<br>
&gt;&gt;&gt; category: messageType,<br>
&gt;&gt;&gt; deviceToken: endpoint.channelID,<br>
&gt;&gt;&gt; clientIdentifier: alias<br>
&gt;&gt;&gt; })<br>
&gt;&gt;&gt; });<br>
&gt;&gt;&gt; |<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; As mentioned on the "Security thread", the |variantID| is no longer a<br>
&gt;&gt;&gt; header, it is part of the HTTP_Basic auth process.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; This is a (local) JavaScript change that I did. It works fine so far:<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; |$.ajax({<br>
&gt;&gt;&gt; contentType:"application/json",<br>
&gt;&gt;&gt; dataType:"json",<br>
&gt;&gt;&gt; type:"POST",<br>
&gt;&gt;&gt; crossDomain: true,<br>
&gt;&gt;&gt; url: url,<br>
&gt;&gt;&gt; headers: {<br>
&gt;&gt;&gt; "Authorization":"Basic" + window.btoa(variantID +":" + secret)<br>
&gt;&gt;&gt; },<br>
&gt;&gt;&gt; data: JSON.stringify({<br>
&gt;&gt;&gt; category: messageType,<br>
&gt;&gt;&gt; deviceToken: endpoint.channelID,<br>
&gt;&gt;&gt; alias: alias ///// NOTE:: the key has changed..........<br>
&gt;&gt;&gt; })<br>
&gt;&gt;&gt; });<br>
&gt;&gt;&gt; |<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The important thing: we add the |"Authorization": "Basic "| header and<br>
&gt;&gt;&gt; using the mentioned|window.btoa()| function for the actual encoding.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; The same applies for the |DELETE| (unregistration).<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Any thoughts? Otherwise, I'd send a PR.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Ah.... the dependency agains the |Base64.js| polyfill library<br>
&gt;&gt;&gt; would/should be included in our "grunt" build for "distribution", or<br>
&gt;&gt;&gt; would it be "just" declared (yeah, that's details but asking for<br>
&gt;&gt;&gt; curiousity)<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; --<br>
&gt;&gt;&gt; Matthias Wessendorf<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt;&gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt;&gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; aerogear-dev mailing list<br>
&gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt;&gt;<br>
&gt;<br>
&gt; --<br>
&gt; abstractj<br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; aerogear-dev mailing list<br>
&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
<br>
<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>Matthias Wessendorf <br><br>blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a>
</div></div>
_______________________________________________<br>aerogear-dev mailing list<br><a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>https://lists.jboss.org/mailman/listinfo/aerogear-dev</blockquote></div><br></body></html>