Package org.postgresql.sspi
Class SSPIClient
- java.lang.Object
-
- org.postgresql.sspi.SSPIClient
-
- All Implemented Interfaces:
ISSPIClient
public class SSPIClient extends java.lang.Object implements ISSPIClient
Use Waffle-JNI to support SSPI authentication when PgJDBC is running on a Windows client and talking to a Windows server.
SSPI is not supported on a non-Windows client.
- Author:
- craig
-
-
Field Summary
Fields Modifier and Type Field Description static java.lang.String
SSPI_DEFAULT_SPN_SERVICE_CLASS
-
Constructor Summary
Constructors Constructor Description SSPIClient(PGStream pgStream, java.lang.String spnServiceClass, boolean enableNegotiate)
Instantiate an SSPIClient for authentication of a connection.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
continueSSPI(int msgLength)
Continue an existing authentication conversation with the back-end in resonse to an authentication request of type AUTH_REQ_GSS_CONT.void
dispose()
Clean up native win32 resources after completion or failure of SSPI authentication.boolean
isSSPISupported()
Test whether we can attempt SSPI authentication.void
startSSPI()
Respond to an authentication request from the back-end for SSPI authentication (AUTH_REQ_SSPI).
-
-
-
Field Detail
-
SSPI_DEFAULT_SPN_SERVICE_CLASS
public static final java.lang.String SSPI_DEFAULT_SPN_SERVICE_CLASS
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
SSPIClient
public SSPIClient(PGStream pgStream, java.lang.String spnServiceClass, boolean enableNegotiate)
Instantiate an SSPIClient for authentication of a connection.
SSPIClient is not re-usable across connections.
It is safe to instantiate SSPIClient even if Waffle and JNA are missing or on non-Windows platforms, however you may not call any methods other than isSSPISupported().
- Parameters:
pgStream
- PostgreSQL connection streamspnServiceClass
- SSPI SPN service class, defaults to POSTGRES if nullenableNegotiate
- enable negotiate
-
-
Method Detail
-
isSSPISupported
public boolean isSSPISupported()
Test whether we can attempt SSPI authentication. If false, do not attempt to call any other SSPIClient methods.- Specified by:
isSSPISupported
in interfaceISSPIClient
- Returns:
- true if it's safe to attempt SSPI authentication
-
startSSPI
public void startSSPI() throws java.sql.SQLException, java.io.IOException
Respond to an authentication request from the back-end for SSPI authentication (AUTH_REQ_SSPI).- Specified by:
startSSPI
in interfaceISSPIClient
- Throws:
java.sql.SQLException
- on SSPI authentication handshake failurejava.io.IOException
- on network I/O issues
-
continueSSPI
public void continueSSPI(int msgLength) throws java.sql.SQLException, java.io.IOException
Continue an existing authentication conversation with the back-end in resonse to an authentication request of type AUTH_REQ_GSS_CONT.- Specified by:
continueSSPI
in interfaceISSPIClient
- Parameters:
msgLength
- Length of message to read, excluding length word and message type word- Throws:
java.sql.SQLException
- if something wrong happensjava.io.IOException
- if something wrong happens
-
dispose
public void dispose()
Clean up native win32 resources after completion or failure of SSPI authentication. This SSPIClient instance becomes unusable after disposal.- Specified by:
dispose
in interfaceISSPIClient
-
-