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.StringSSPI_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 voidcontinueSSPI(int msgLength)Continue an existing authentication conversation with the back-end in resonse to an authentication request of type AUTH_REQ_GSS_CONT.voiddispose()Clean up native win32 resources after completion or failure of SSPI authentication.booleanisSSPISupported()Test whether we can attempt SSPI authentication.voidstartSSPI()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:
isSSPISupportedin interfaceISSPIClient- Returns:
- true if it's safe to attempt SSPI authentication
-
startSSPI
public void startSSPI() throws java.sql.SQLException, java.io.IOExceptionRespond to an authentication request from the back-end for SSPI authentication (AUTH_REQ_SSPI).- Specified by:
startSSPIin 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.IOExceptionContinue an existing authentication conversation with the back-end in resonse to an authentication request of type AUTH_REQ_GSS_CONT.- Specified by:
continueSSPIin 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:
disposein interfaceISSPIClient
-
-