public class TSaslServerTransport extends TTransport
TTransport, but performs SASL server
negotiation on the call to open(). This class will wrap ensuing
communication over it, if a SASL QOP is negotiated with the other party.| Modifier and Type | Class | Description |
|---|---|---|
static class |
TSaslServerTransport.Factory |
TTransportFactory to create
TSaslServerTransports |
| Modifier and Type | Field | Description |
|---|---|---|
protected static int |
DEFAULT_MAX_LENGTH |
|
protected static int |
MECHANISM_NAME_BYTES |
|
protected static int |
PAYLOAD_LENGTH_BYTES |
|
protected static int |
STATUS_BYTES |
|
protected TTransport |
underlyingTransport |
Transport underlying this one.
|
| Constructor | Description |
|---|---|
TSaslServerTransport(java.lang.String mechanism,
java.lang.String protocol,
java.lang.String serverName,
java.util.Map<java.lang.String,java.lang.String> props,
javax.security.auth.callback.CallbackHandler cbh,
TTransport transport) |
Creates a
SaslServer using the given SASL-specific parameters. |
TSaslServerTransport(TTransport transport) |
Uses the given underlying transport.
|
| Modifier and Type | Method | Description |
|---|---|---|
void |
addServerDefinition(java.lang.String mechanism,
java.lang.String protocol,
java.lang.String serverName,
java.util.Map<java.lang.String,java.lang.String> props,
javax.security.auth.callback.CallbackHandler cbh) |
Add a supported server definition to this transport.
|
void |
close() |
Closes the underlying transport and disposes of the SASL implementation
underlying this transport.
|
void |
flush() |
Flushes to the underlying transport.
|
protected org.apache.thrift.transport.TSaslTransport.SaslRole |
getRole() |
|
javax.security.sasl.SaslClient |
getSaslClient() |
Get the underlying
SaslClient. |
javax.security.sasl.SaslServer |
getSaslServer() |
Get the underlying
SaslServer. |
TTransport |
getUnderlyingTransport() |
Get the underlying transport that Sasl is using.
|
protected void |
handleSaslStartMessage() |
Performs the server side of the initial portion of the Thrift SASL protocol.
|
boolean |
isOpen() |
True if the underlying transport is open and the SASL handshake is
complete.
|
void |
open() |
Opens the underlying transport if it's not already open and then performs
SASL negotiation.
|
int |
read(byte[] buf,
int off,
int len) |
Read from the underlying transport.
|
protected int |
readLength() |
Read a 4-byte word from the underlying transport and interpret it as an
integer.
|
protected org.apache.thrift.transport.TSaslTransport.SaslResponse |
receiveSaslMessage() |
Read a complete Thrift SASL message.
|
protected void |
sendAndThrowMessage(org.apache.thrift.transport.TSaslTransport.NegotiationStatus status,
java.lang.String message) |
Send a Thrift SASL message with the given status (usually BAD or ERROR) and
string message, and then throw a TTransportException with the given
message.
|
protected void |
sendSaslMessage(org.apache.thrift.transport.TSaslTransport.NegotiationStatus status,
byte[] payload) |
Send a complete Thrift SASL message.
|
protected void |
setSaslServer(javax.security.sasl.SaslServer saslServer) |
|
void |
write(byte[] buf,
int off,
int len) |
Write to the underlying transport.
|
protected void |
writeLength(int length) |
Write the given integer as 4 bytes to the underlying transport.
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitconsumeBuffer, getBuffer, getBufferPosition, getBytesRemainingInBuffer, peek, readAll, writeprotected static final int DEFAULT_MAX_LENGTH
protected static final int MECHANISM_NAME_BYTES
protected static final int STATUS_BYTES
protected static final int PAYLOAD_LENGTH_BYTES
protected TTransport underlyingTransport
public TSaslServerTransport(TTransport transport)
transport - Transport underlying this one.public TSaslServerTransport(java.lang.String mechanism,
java.lang.String protocol,
java.lang.String serverName,
java.util.Map<java.lang.String,java.lang.String> props,
javax.security.auth.callback.CallbackHandler cbh,
TTransport transport)
SaslServer using the given SASL-specific parameters.
See the Java documentation for Sasl.createSaslServer for the
details of the parameters.transport - The underlying Thrift transport.public void addServerDefinition(java.lang.String mechanism,
java.lang.String protocol,
java.lang.String serverName,
java.util.Map<java.lang.String,java.lang.String> props,
javax.security.auth.callback.CallbackHandler cbh)
Sasl.createSaslServer for the details of the
parameters.protected org.apache.thrift.transport.TSaslTransport.SaslRole getRole()
protected void handleSaslStartMessage()
throws TTransportException,
javax.security.sasl.SaslException
TTransportExceptionjavax.security.sasl.SaslExceptionprotected void setSaslServer(javax.security.sasl.SaslServer saslServer)
protected void sendSaslMessage(org.apache.thrift.transport.TSaslTransport.NegotiationStatus status,
byte[] payload)
throws TTransportException
status - The status to send.payload - The data to send as the payload of this message.TTransportExceptionprotected org.apache.thrift.transport.TSaslTransport.SaslResponse receiveSaslMessage()
throws TTransportException
TTransportException - Thrown if there is a failure reading from the underlying
transport, or if a status code of BAD or ERROR is encountered.protected void sendAndThrowMessage(org.apache.thrift.transport.TSaslTransport.NegotiationStatus status,
java.lang.String message)
throws TTransportException
status - The Thrift SASL status code to send. Usually BAD or ERROR.message - The optional message to send to the other side.TTransportException - Always thrown with the message provided.public void open()
throws TTransportException
open in class TTransportTTransportException - if the transport could not be openedpublic javax.security.sasl.SaslClient getSaslClient()
SaslClient.SaslClient, or null if this transport
is backed by a SaslServer.public TTransport getUnderlyingTransport()
TTransport transportpublic javax.security.sasl.SaslServer getSaslServer()
SaslServer.SaslServer, or null if this transport
is backed by a SaslClient.protected int readLength()
throws TTransportException
TTransportException - Thrown if reading from the underlying transport fails.protected void writeLength(int length)
throws TTransportException
length - The length prefix of the next SASL message to write.TTransportException - Thrown if writing to the underlying transport fails.public void close()
close in class TTransportpublic boolean isOpen()
isOpen in class TTransportpublic int read(byte[] buf,
int off,
int len)
throws TTransportException
read in class TTransportbuf - Array to read intooff - Index to start reading atlen - Maximum number of bytes to readTTransportException - if there was an error reading datapublic void write(byte[] buf,
int off,
int len)
throws TTransportException
write in class TTransportbuf - The output data bufferoff - The offset to start writing fromlen - The number of bytes to writeTTransportException - if there was an error writing datapublic void flush()
throws TTransportException
flush in class TTransportTTransportException - if there was an error writing out data.