Good stuff Raymond.

Does this fix/is related to AMBER-15?

Thanks

Antonio

On May 1, 2012, at 5:34 AM, <[email protected]> <[email protected]> wrote:

> Author: rfeng
> Date: Tue May  1 03:34:41 2012
> New Revision: 1332515
> 
> URL: http://svn.apache.org/viewvc?rev=1332515&view=rev
> Log:
> Fix the code to not mess up with HTTP POST body
> 
> Modified:
>    
> incubator/amber/trunk/oauth-2.0/oauth2-resourceserver/src/main/java/org/apache/amber/oauth2/rs/extractor/BearerQueryTokenExtractor.java
> 
> Modified: 
> incubator/amber/trunk/oauth-2.0/oauth2-resourceserver/src/main/java/org/apache/amber/oauth2/rs/extractor/BearerQueryTokenExtractor.java
> URL: 
> http://svn.apache.org/viewvc/incubator/amber/trunk/oauth-2.0/oauth2-resourceserver/src/main/java/org/apache/amber/oauth2/rs/extractor/BearerQueryTokenExtractor.java?rev=1332515&r1=1332514&r2=1332515&view=diff
> ==============================================================================
> --- 
> incubator/amber/trunk/oauth-2.0/oauth2-resourceserver/src/main/java/org/apache/amber/oauth2/rs/extractor/BearerQueryTokenExtractor.java
>  (original)
> +++ 
> incubator/amber/trunk/oauth-2.0/oauth2-resourceserver/src/main/java/org/apache/amber/oauth2/rs/extractor/BearerQueryTokenExtractor.java
>  Tue May  1 03:34:41 2012
> @@ -21,6 +21,9 @@
> 
> package org.apache.amber.oauth2.rs.extractor;
> 
> +import java.io.UnsupportedEncodingException;
> +import java.net.URLDecoder;
> +
> import javax.servlet.http.HttpServletRequest;
> 
> import org.apache.amber.oauth2.common.OAuth;
> @@ -34,16 +37,48 @@ public class BearerQueryTokenExtractor i
> 
>     @Override
>     public String getAccessToken(HttpServletRequest request) {
> -        String token = request.getParameter(OAuth.OAUTH_BEARER_TOKEN);
> +        String token = getQueryParameter(request, OAuth.OAUTH_BEARER_TOKEN);
>         if (token == null) {
> -            token = request.getParameter(OAuth.OAUTH_TOKEN);
> +            token = getQueryParameter(request, OAuth.OAUTH_TOKEN);
>         }
>         return token;
>     }
> 
>     @Override
>     public String getAccessToken(HttpServletRequest request, String 
> tokenName) {
> -        return request.getParameter(tokenName);
> +        return getQueryParameter(request, tokenName);
> +    }
> +
> +    /**
> +     * A replacement for HttpServletRequest.getParameter() as it will mess 
> up with HTTP POST body
> +     * @param request
> +     * @param name
> +     * @return
> +     */
> +    private String getQueryParameter(HttpServletRequest request, String 
> name) {
> +        String query = request.getQueryString();
> +        if (query == null) {
> +            return null;
> +        }
> +        String[] params = query.split("&");
> +        for (String param : params) {
> +            try {
> +                param = URLDecoder.decode(param, "UTF-8");
> +            } catch (UnsupportedEncodingException e) {
> +                // Ignore
> +            }
> +            int index = param.indexOf('=');
> +            String key = param;
> +            String value = null;
> +            if (index != -1) {
> +                key = param.substring(0, index);
> +                value = param.substring(index + 1);
> +            }
> +            if (key.equals(name)) {
> +                return value;
> +            }
> +        }
> +        return null;
>     }
> 
> }
> 
> 

Reply via email to