[
https://issues.apache.org/jira/browse/TINKERPOP3-855?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14936601#comment-14936601
]
ASF GitHub Bot commented on TINKERPOP3-855:
-------------------------------------------
GitHub user PommeVerte opened a pull request:
https://github.com/apache/incubator-tinkerpop/pull/98
Made correction to fix TINKERPOP3-855.
This fixes the issue with Json submitted sasl arguments not being in
`byte[]` format.
It is not BC breaking. Tests seem to pass though I wouldn't mind
confirmation here.
I also added changes to the documentation to reflect the new functionality.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/PommeVerte/incubator-tinkerpop
TINKERPOP3-855-json-auth
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/incubator-tinkerpop/pull/98.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #98
----
commit 39cb42ddde538a33bd7b3b3a0b27428aae2a2276
Author: Dylan Millikin <[email protected]>
Date: 2015-09-30T08:52:56Z
Made correction to fix TINKERPOP3-855. Added Test and changed documentation.
----
> sasl authentication type error due to Json format
> -------------------------------------------------
>
> Key: TINKERPOP3-855
> URL: https://issues.apache.org/jira/browse/TINKERPOP3-855
> Project: TinkerPop 3
> Issue Type: Bug
> Components: server
> Affects Versions: 3.0.1-incubating
> Reporter: Dylan Millikin
> Assignee: stephen mallette
> Fix For: 3.1.0-incubating, 3.0.2-incubating
>
>
> The documentation states :
> {quote}The password should be an encoded sequence of UTF-8 bytes{quote}
> Thus the {{SaslAuthenticationHandler}} expects to receive a {{byte[]}} type
> var.
>
> However, using gremlin-server with {{GraphSonMessageSerializer}}, if I send
> the payload with the sasl argument (say {{\x00stephen\x00password}}) in
> response to a gremlin-server {{407}} authentication challenge, I will get the
> following error:
> {code}
> java.lang.ClassCastException: java.lang.String cannot be cast to [B
> at
> org.apache.tinkerpop.gremlin.server.handler.SaslAuthenticationHandler.channelRead(SaslAuthenticationHandler.java:74)
> {code}
> This seems "normal" in that Json does not support any binary dataType and the
> sasl argument will automatically be converted to {{String}}.
> I quickly tested a correction locally by changing [this
> line|https://github.com/apache/incubator-tinkerpop/blob/tp30/gremlin-server/src/main/java/org/apache/tinkerpop/gremlin/server/handler/SaslAuthenticationHandler.java#L74]
> to :
> {code}
> final String saslString = (String)
> requestMessage.getArgs().get(Tokens.ARGS_SASL);
> final byte[] saslResponse =
> saslString.getBytes(Charset.forName("UTF-8"));{code}
> This is clearly a breaking change, but it solved the Json issue.
> If you have any ideas on the way you want to go with this (or If I'm totally
> doing something wrong) let me know. I could probably make a PR for this.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)