OAuth для Джерси - PullRequest
       33

OAuth для Джерси

1 голос
/ 09 марта 2011

Система RESTful построена с использованием джерси.Ошибка возникает, когда подпись проверена и ее невозможно выполнить.Пожалуйста, учите, входит ли человек, который понимает причину.

MacOS X Jetty Google App Engine

(Клиент)

@GET
@Path("/oauth_client")
@Produces("text/html")
public String oauthClient() {

    OAuthParameters params = new OAuthParameters().consumerKey("hoge").signatureMethod("HMAC-SHA1").timestamp().nonce().version("1.1").token("sho1get");
    OAuthSecrets secrets = new OAuthSecrets().consumerSecret("testtest").tokenSecret("testtest");

    Client client = Client.create();
    WebResource resource = client.resource("http://localhost:8080/v1/test/oauth_provider");

    OAuthClientFilter filter = new OAuthClientFilter(client.getProviders(), params, secrets);
    resource.addFilter(filter);

    System.out.println("==== Client =====");
    return resource.get(String.class);
}

(Поставщик)

@Path("/oauth_provider")
@Produces("text/plain")
public String oauthProvider(@Context HttpContext context) {

    OAuthServerRequest request = new OAuthServerRequest(context.getRequest());
    OAuthParameters params = new OAuthParameters().readRequest(request);
    OAuthSecrets secrets = new OAuthSecrets().consumerSecret("hoge").tokenSecret("testtest");
    String timestamp = params.getTimestamp();

    try {
        /* The error occurs here. */
        if (OAuthSignature.verify(request, params, secrets)) {
            return "OK";
        }
    } catch (OAuthSignatureException e) {
        log.warning(e.getMessage());
    } catch (UniformInterfaceException e) {
        log.warning(e.getMessage());
    } catch (Exception e) {
        log.warning(e.getMessage());
    }

    return "ERROR";
}

(Ошибка)

[java] 2011/03/09 4:52:07 com.sun.jersey.spi.container.ContainerResponse mapMappableContainerException
 [java] SEVERE: The exception contained within MappableContainerException could not be mapped to a response, re-throwing to the HTTP container
 [java] java.lang.AbstractMethodError
 [java]         at com.sun.jersey.oauth.signature.OAuthSignature.constructRequestURL(OAuthSignature.java:193)
 [java]         at com.sun.jersey.oauth.signature.OAuthSignature.elements(OAuthSignature.java:218)
 [java]         at com.sun.jersey.oauth.signature.OAuthSignature.verify(OAuthSignature.java:117)
 [java]         at jp.tryden.resources.test.TestResource.oauthProvider(TestResource.java:259)
 [java]         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 [java]         at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 [java]         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 [java]         at java.lang.reflect.Method.invoke(Method.java:597)
 [java]         at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
 [java]         at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.invokeSubLocator(SubLocatorRule.java:162)
 [java]         at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:94)
 [java]         at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)
 [java]         at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:83)
 [java]         at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:133)
 [java]         at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:71)
 [java]         at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:990)
 [java]         at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:941)
 [java]         at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:932)
 [java]         at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:384)
 [java]         at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:451)
 [java]         at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:632)
 [java]         at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 [java]         at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
 [java]         at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
 [java]         at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
 [java]         at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
 [java]         at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
 [java]         at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
 [java]         at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
 [java]         at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
 [java]         at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
 [java]         at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
 [java]         at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
 [java]         at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
 [java]         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
 [java]         at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
 [java]         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
 [java]         at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
 [java]         at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
 [java]         at org.mortbay.jetty.Server.handle(Server.java:326)
 [java]         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
 [java]         at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923)
 [java]         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547)
 [java]         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
 [java]         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
 [java]         at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
 [java]         at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
 [java] 2011/03/09 4:52:07 com.google.apphosting.utils.jetty.JettyLogger warn

1 Ответ

0 голосов
/ 09 марта 2011

Обновили ли вы на своем компьютере последнее обновление MacOS Java?http://support.apple.com/kb/HT4562

Это обновление приводит к сбою dev_server в Google App Engine и может также повлиять на вас.Неизвестно, кто виноват, но здесь было зарегистрировано сообщение об ошибке: http://code.google.com/p/googleappengine/issues/detail?id=4712

Если несколько человек отметят проблему, мы можем получить более быстрый ответ.

...