You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@oltu.apache.org by "Michael Ukpong (JIRA)" <ji...@apache.org> on 2015/10/21 18:18:27 UTC
[jira] [Commented] (OLTU-26) Guice+Jersey+Amber: Can't correctly
create OAuthTokenRequest instance
[ https://issues.apache.org/jira/browse/OLTU-26?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14967383#comment-14967383 ]
Michael Ukpong commented on OLTU-26:
------------------------------------
Hi Antonio and Aleksandar. I have been battling this same issue for days. I am using Otus 1.0.1, deploying on Jetty using org.glassfish.jersey.servlet.ServletContainer. Same error `{"error_description":"Missing grant_type parameter value","error":"invalid_request"}`
I have written a Request wrapper like this:
```import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import javax.ws.rs.core.MultivaluedMap;
public class OAuthRequestWrapper extends HttpServletRequestWrapper {
private MultivaluedMap<String, String> form;
public OAuthRequestWrapper(HttpServletRequest request, MultivaluedMap<String, String> form)
{ super(request); this.form = form; }
@Override
public String getParameter(String name) {
String value = super.getParameter(name);
if (value == null)
{ value = form.getFirst(name); }
return value;
}
@Override
public String[] getParameterValues(String name) {
String[] values = super.getParameterValues(name);
if(values == null && form.get(name) != null){
values = new String[form.get(name).size()];
values = form.get(name).toArray(values);
}
return values;
}
}```
Still getting the same error. what did you say was the walkaround?
Thanks
> Guice+Jersey+Amber: Can't correctly create OAuthTokenRequest instance
> ---------------------------------------------------------------------
>
> Key: OLTU-26
> URL: https://issues.apache.org/jira/browse/OLTU-26
> Project: Apache Oltu
> Issue Type: Bug
> Components: oauth2-common
> Environment: jersey 1.10
> guice 3.0-SNAPSHOT
> amber 0.22-incubating-SNAPSHOT
> Reporter: Alexander Urmuzov
>
> I've got a problem with creating OAuthTokenRequest.
> It needs an instance of HttpServletRequest on creation, but all instances which I can get through guice or jersey injections have no post parameters.
> Guice injection example:
> private final Provider<HttpServletRequest> requestProvider;
> @Inject
> public TokenEndpoint(Provider<HttpServletRequest> requestProvider) {
> this.requestProvider = requestProvider;
> }
> @POST
> @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
> @Produces(MediaType.APPLICATION_JSON)
> public Response authorize() throws OAuthSystemException {
> OAuthTokenRequest oauthRequest = null;
> try {
> oauthRequest = new OAuthTokenRequest(requestProvider.get());
> ....
> Jersey injection example:
> @POST
> @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
> @Produces(MediaType.APPLICATION_JSON)
> public Response authorize(@Context HttpServletRequest request) throws OAuthSystemException {
> OAuthTokenRequest oauthRequest = null;
> try {
> oauthRequest = new OAuthTokenRequest(request);
> Looks like jersey have parsed HttpServletRequest and removed all post parameters from it.
> If I attach filter that tries to get some parameter from HttpServletRequest before jersey, my code works, but with exception from jersey.
> But I can retrieve MultivaluedMap of post parameters from jersey with all data and no errors.
> I think there must be some alternative constructor for such environments. Any thoughts?
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)