<div dir="ltr">Do you have a suggested approach to handling this?  Prompt the user that they should turn off private browsing on their Iphone?</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 30, 2015 at 2:48 AM, Stian Thorgersen <span dir="ltr">&lt;<a href="mailto:stian@redhat.com" target="_blank">stian@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">Only option would be to disable state verification, which could leave it open to CSRF.<br>
<div><div class="h5"><br>
----- Original Message -----<br>
&gt; From: &quot;Dean Peterson&quot; &lt;<a href="mailto:peterson.dean@gmail.com">peterson.dean@gmail.com</a>&gt;<br>
&gt; To: <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt; Sent: Monday, 26 January, 2015 12:34:26 AM<br>
&gt; Subject: [keycloak-user] IPhone turns off local storage by default and that causes Keycloak.js to fail.<br>
&gt;<br>
&gt; IPhones are in private mode by default. When in private mode, they do not<br>
&gt; allow localstorage. Any application secured with the pure js keycloak file<br>
&gt; fails. When I turn private mode off, the application works. Will Keycloak be<br>
&gt; supporting IPhones with the pure javascript client in the future without<br>
&gt; requiring users turn private mode off?<br>
&gt;<br>
&gt; I get the following error in private mode. The highlighted code is what<br>
&gt; causes the error:<br>
&gt;<br>
&gt; QuotaExceededError: DOM Exception 22: An attempt was made to add something to<br>
&gt; storage that exceeded the quota.<br>
&gt;<br>
&gt; Jessicakc.createLoginUrl = function(options) {<br>
&gt; var state = createUUID();<br>
&gt;<br>
&gt; var redirectUri = adapter.redirectUri(options);<br>
&gt; if (options &amp;&amp; options.prompt) {<br>
&gt; if (redirectUri.indexOf(&#39;?&#39;) == -1) {<br>
&gt; redirectUri += &#39;?prompt=&#39; + options.prompt;<br>
&gt; } else {<br>
&gt; redirectUri += &#39;&amp;prompt=&#39; + options.prompt;<br>
&gt; }<br>
&gt; }<br>
&gt;<br>
&gt; sessionStorage.oauthState = state;<br>
&gt;<br>
&gt; var url = getRealmUrl()<br>
&gt; + &#39;/tokens/login&#39;<br>
&gt; + &#39;?client_id=&#39; + encodeURIComponent(kc.clientId)<br>
&gt; + &#39;&amp;redirect_uri=&#39; + encodeURIComponent(redirectUri)<br>
&gt; + &#39;&amp;state=&#39; + encodeURIComponent(state)<br>
&gt; + &#39;&amp;response_type=code&#39;;<br>
&gt;<br>
&gt; if (options &amp;&amp; options.prompt) {<br>
&gt; url += &#39;&amp;prompt=&#39; + options.prompt;<br>
&gt; }<br>
&gt;<br>
&gt; if (options &amp;&amp; options.loginHint) {<br>
&gt; url += &#39;&amp;login_hint=&#39; + options.loginHint;<br>
&gt; }<br>
&gt;<br>
&gt; return url;<br>
&gt; }<br>
&gt;<br>
&gt;<br>
&gt;<br>
</div></div>&gt; _______________________________________________<br>
&gt; keycloak-user mailing list<br>
&gt; <a href="mailto:keycloak-user@lists.jboss.org">keycloak-user@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/keycloak-user" target="_blank">https://lists.jboss.org/mailman/listinfo/keycloak-user</a><br>
</blockquote></div><br></div>