Hi

Basic auth credentials need to be Base64 encoded[1]. Maybe your API
consumer is sometimes sending the credentials with ASCII encoding?

The "Invalid input length 9" error message suggests that the input is not
properly Base64 encoded, because the length of Base64 encoded text must be
an integer multiple of 4[2].

[1]
http://stackoverflow.com/questions/5597086/base-64-encoding-in-http-basic-auth
[2]
http://stackoverflow.com/questions/4080988/why-does-base64-encoding-requires-padding-if-the-input-length-is-not-divisible-b

2016-09-21 9:16 GMT+03:00 Vaibhav Dhawan <vaibhav.10.dha...@gmail.com>:

> Hello,
>
> Currently on Dropwizard 1.0.0. While scanning my logs yesterday, i see few
> occurrences of
>  java.lang.IllegalArgumentException: 
> com.google.common.io.BaseEncoding$DecodingException:
> Invalid input length 9
>
> in my logs. Currently, there is only one consumer for my service and it is
> sending me static user name and password as basic auth creds.
>
> Again, this doesnt occur every time, which makes it all the more difficult
> to debug. The password for basic auth is 2dff92c1-81c5-44e0-a2a8-66686b0a8e66
> (not sure if this could be the reason).
>
> The full exception trace is :
>
>  i.d.a.b.BasicCredentialAuthFilter -  Error decoding credentials
> java.lang.IllegalArgumentException: 
> com.google.common.io.BaseEncoding$DecodingException:
> Invalid input length 9
>         at com.google.common.io.BaseEncoding.decode(BaseEncoding.java:212)
>         at io.dropwizard.auth.basic.BasicCredentialAuthFilter.
> getCredentials(BasicCredentialAuthFilter.java:58)
>         at io.dropwizard.auth.basic.BasicCredentialAuthFilter.filter(
> BasicCredentialAuthFilter.java:27)
>         at org.glassfish.jersey.server.ContainerFilteringStage.apply(
> ContainerFilteringStage.java:132)
>         at org.glassfish.jersey.server.ContainerFilteringStage.apply(
> ContainerFilteringStage.java:68)
>         at org.glassfish.jersey.process.internal.Stages.process(
> Stages.java:197)
>         at org.glassfish.jersey.server.ServerRuntime$2.run(
> ServerRuntime.java:318)
>         at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
>         at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
>         at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
>         at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
>         at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
>         at org.glassfish.jersey.process.internal.RequestScope.
> runInScope(RequestScope.java:317)
>         at org.glassfish.jersey.server.ServerRuntime.process(
> ServerRuntime.java:305)
>         at org.glassfish.jersey.server.ApplicationHandler.handle(
> ApplicationHandler.java:1154)
>         at org.glassfish.jersey.servlet.WebComponent.serviceImpl(
> WebComponent.java:473)
>         at org.glassfish.jersey.servlet.WebComponent.service(
> WebComponent.java:427)
>         at org.glassfish.jersey.servlet.ServletContainer.service(
> ServletContainer.java:388)
>         at org.glassfish.jersey.servlet.ServletContainer.service(
> ServletContainer.java:341)
>         at org.glassfish.jersey.servlet.ServletContainer.service(
> ServletContainer.java:228)
>         at io.dropwizard.jetty.NonblockingServletHolder.handle(
> NonblockingServletHolder.java:49)
>         at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1689)
>         at io.dropwizard.servlets.ThreadNameFilter.doFilter(
> ThreadNameFilter.java:34)
>         at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1676)
>         at io.dropwizard.jersey.filter.AllowedMethodsFilter.handle(
> AllowedMethodsFilter.java:50)
>         at io.dropwizard.jersey.filter.AllowedMethodsFilter.doFilter(
> AllowedMethodsFilter.java:44)
>         at org.eclipse.jetty.servlet.ServletHandler$CachedChain.
> doFilter(ServletHandler.java:1676)
>         at org.eclipse.jetty.servlet.ServletHandler.doHandle(
> ServletHandler.java:581)
>         at org.eclipse.jetty.server.handler.ContextHandler.
> doHandle(ContextHandler.java:1174)
>         at org.eclipse.jetty.servlet.ServletHandler.doScope(
> ServletHandler.java:511)
>         at org.eclipse.jetty.server.handler.ContextHandler.
> doScope(ContextHandler.java:1106)
>         at org.eclipse.jetty.server.handler.ScopedHandler.handle(
> ScopedHandler.java:141)
>         at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:134)
>         at com.codahale.metrics.jetty9.InstrumentedHandler.handle(
> InstrumentedHandler.java:240)
>         at io.dropwizard.jetty.RoutingHandler.handle(
> RoutingHandler.java:51)
>         at org.eclipse.jetty.server.handler.gzip.GzipHandler.
> handle(GzipHandler.java:459)
>         at io.dropwizard.jetty.BiDiGzipHandler.handle(
> BiDiGzipHandler.java:68)
>         at org.eclipse.jetty.server.handler.RequestLogHandler.
> handle(RequestLogHandler.java:56)
>         at org.eclipse.jetty.server.handler.StatisticsHandler.
> handle(StatisticsHandler.java:169)
>         at org.eclipse.jetty.server.handler.HandlerWrapper.handle(
> HandlerWrapper.java:134)
>         at org.eclipse.jetty.server.Server.handle(Server.java:524)
>         at org.eclipse.jetty.server.HttpChannel.handle(
> HttpChannel.java:319)
>         at org.eclipse.jetty.server.HttpConnection.onFillable(
> HttpConnection.java:253)
>         at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(
> AbstractConnection.java:273)
>         at org.eclipse.jetty.io.FillInterest.fillable(
> FillInterest.java:95)
>         at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(
> SelectChannelEndPoint.java:93)
>         at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.
> executeProduceConsume(ExecuteProduceConsume.java:303)
>         at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.
> produceConsume(ExecuteProduceConsume.java:148)
>         at org.eclipse.jetty.util.thread.strategy.
> ExecuteProduceConsume.run(ExecuteProduceConsume.java:136)
>         at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(
> QueuedThreadPool.java:671)
>         at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(
> QueuedThreadPool.java:589)
>         at java.lang.Thread.run(Thread.java:745)
> Caused by: com.google.common.io.BaseEncoding$DecodingException: Invalid
> input length 9
>         at com.google.common.io.BaseEncoding$Base64Encoding.
> decodeTo(BaseEncoding.java:872)
>         at com.google.common.io.BaseEncoding.decodeChecked(
> BaseEncoding.java:226)
>         at com.google.common.io.BaseEncoding.decode(BaseEncoding.java:210)
>
>
> Thanks
>
> --
> You received this message because you are subscribed to the Google Groups
> "dropwizard-user" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to dropwizard-user+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>



-- 
Jonne Jyrylä
jaa...@gmail.com

-- 
You received this message because you are subscribed to the Google Groups 
"dropwizard-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dropwizard-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to