Hi Caleb, JDBC Thin Client doesn't supports authorization for now.
On Wed, Nov 15, 2017 at 6:54 PM, calebs <[email protected]> wrote: > Hi Valdimir, > > There are at least two problems that I've found here. The first is the > query > execution engine as you have just pointed out. The second one is the JDBC > thin driver itself. > > In JdbcThinTcpIo.handshake, it doesn't pass in user credentials (i.e., user > & password) as shown below, so how can the server identify the user during > the hand shaking? > > /** > * Used for versions: 2.1.5 and 2.3.0. The protocol version is changed > but handshake format isn't changed. > * > * @param ver JDBC client version. > * @throws IOException On IO error. > * @throws SQLException On connection reject. > */ > public void handshake(ClientListenerProtocolVersion ver) throws > IOException, SQLException { > BinaryWriterExImpl writer = new BinaryWriterExImpl(null, new > BinaryHeapOutputStream(HANDSHAKE_MSG_SIZE), > null, null); > > writer.writeByte((byte) ClientListenerRequest.HANDSHAKE); > > writer.writeShort(ver.major()); > writer.writeShort(ver.minor()); > writer.writeShort(ver.maintenance()); > > writer.writeByte(ClientListenerNioListener.JDBC_CLIENT); > > writer.writeBoolean(distributedJoins); > writer.writeBoolean(enforceJoinOrder); > writer.writeBoolean(collocated); > writer.writeBoolean(replicatedOnly); > writer.writeBoolean(autoCloseServerCursor); > writer.writeBoolean(lazy); > writer.writeBoolean(skipReducerOnUpdate); > > send(writer.array()); > > BinaryReaderExImpl reader = new BinaryReaderExImpl(null, new > BinaryHeapInputStream(read()), > null, null, false); > > boolean accepted = reader.readBoolean(); > > if (accepted) { > if (reader.available() > 0) { > byte maj = reader.readByte(); > byte min = reader.readByte(); > byte maintenance = reader.readByte(); > > String stage = reader.readString(); > > long ts = reader.readLong(); > byte[] hash = reader.readByteArray(); > > igniteVer = new IgniteProductVersion(maj, min, maintenance, > stage, ts, hash); > } > else > igniteVer = new IgniteProductVersion((byte)2, (byte)0, > (byte)0, "Unknown", 0L, null); > } > else { > short maj = reader.readShort(); > short min = reader.readShort(); > short maintenance = reader.readShort(); > > String err = reader.readString(); > > ClientListenerProtocolVersion srvProtocolVer = > ClientListenerProtocolVersion.create(maj, min, maintenance); > > if (VER_2_1_5.equals(srvProtocolVer)) > handshake(VER_2_1_5); > else if (VER_2_1_0.equals(srvProtocolVer)) > handshake_2_1_0(); > else { > throw new SQLException("Handshake failed > [driverProtocolVer=" + CURRENT_VER + > ", remoteNodeProtocolVer=" + srvProtocolVer + ", err=" > + > err + ']', > SqlStateCode.CONNECTION_REJECTED); > } > } > } > > > > > -- > Sent from: http://apache-ignite-users.70518.x6.nabble.com/ > -- Best regards, Andrey V. Mashenkov
