You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oltu.apache.org by si...@apache.org on 2014/06/25 14:30:30 UTC

svn commit: r1605370 - in /oltu/trunk/oauth-2.0/common/src: main/java/org/apache/oltu/oauth2/common/utils/OAuthUtils.java test/java/org/apache/oltu/oauth2/common/utils/OAuthUtilsTest.java

Author: simonetripodi
Date: Wed Jun 25 12:30:29 2014
New Revision: 1605370

URL: http://svn.apache.org/r1605370
Log:
OLTU-105 - Android 4.1 expects "realm" as first parameter in www-authenticate header

applied patch kindly provided by Dominik Schuermann and reviewed by Charles Simpson


Modified:
    oltu/trunk/oauth-2.0/common/src/main/java/org/apache/oltu/oauth2/common/utils/OAuthUtils.java
    oltu/trunk/oauth-2.0/common/src/test/java/org/apache/oltu/oauth2/common/utils/OAuthUtilsTest.java

Modified: oltu/trunk/oauth-2.0/common/src/main/java/org/apache/oltu/oauth2/common/utils/OAuthUtils.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/common/src/main/java/org/apache/oltu/oauth2/common/utils/OAuthUtils.java?rev=1605370&r1=1605369&r2=1605370&view=diff
==============================================================================
--- oltu/trunk/oauth-2.0/common/src/main/java/org/apache/oltu/oauth2/common/utils/OAuthUtils.java (original)
+++ oltu/trunk/oauth-2.0/common/src/main/java/org/apache/oltu/oauth2/common/utils/OAuthUtils.java Wed Jun 25 12:30:29 2014
@@ -400,6 +400,23 @@ public final class OAuthUtils {
     public static String encodeOAuthHeader(Map<String, Object> entries) {
         StringBuffer sb = new StringBuffer();
         sb.append(OAuth.OAUTH_HEADER_NAME).append(" ");
+        /*
+         * Android 4.1 requires realm as first parameter!
+         * If not set, it will throw an IOException
+         * see parseChallenges in
+         * https://android.googlesource.com/platform/libcore/+/android-4.1.2_r2/luni/src/main/java/libcore/net/http/HeaderParser.java 
+         * more information:
+         * http://stackoverflow.com/questions/11810447/httpurlconnection-worked-fine-in-android-2-x-but-not-in-4-1-no-authentication-c
+         */
+        if (entries.get("realm") != null) {
+            String value = String.valueOf(entries.get("realm"));
+            if (!OAuthUtils.isEmpty(value)) {
+                sb.append("realm=\"");
+                sb.append(value);
+                sb.append("\",");
+            }
+            entries.remove("realm");
+        }
         for (Map.Entry<String, Object> entry : entries.entrySet()) {
             String value = entry.getValue() == null? null: String.valueOf(entry.getValue());
             if (!OAuthUtils.isEmpty(entry.getKey()) && !OAuthUtils.isEmpty(value)) {

Modified: oltu/trunk/oauth-2.0/common/src/test/java/org/apache/oltu/oauth2/common/utils/OAuthUtilsTest.java
URL: http://svn.apache.org/viewvc/oltu/trunk/oauth-2.0/common/src/test/java/org/apache/oltu/oauth2/common/utils/OAuthUtilsTest.java?rev=1605370&r1=1605369&r2=1605370&view=diff
==============================================================================
--- oltu/trunk/oauth-2.0/common/src/test/java/org/apache/oltu/oauth2/common/utils/OAuthUtilsTest.java (original)
+++ oltu/trunk/oauth-2.0/common/src/test/java/org/apache/oltu/oauth2/common/utils/OAuthUtilsTest.java Wed Jun 25 12:30:29 2014
@@ -167,7 +167,7 @@ public class OAuthUtilsTest {
         entries.put("error", "invalid_token");
 
         String header = OAuthUtils.encodeOAuthHeader(entries);
-        assertEquals("Bearer error=\"invalid_token\",realm=\"Some Example Realm\"", header);
+        assertEquals("Bearer realm=\"Some Example Realm\",error=\"invalid_token\"", header);
     }
 
     @Test