Class SSPIClient

  • All Implemented Interfaces:
    ISSPIClient

    public class SSPIClient
    extends 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 Detail

      • SSPI_DEFAULT_SPN_SERVICE_CLASS

        public static String SSPI_DEFAULT_SPN_SERVICE_CLASS
    • Constructor Detail

      • SSPIClient

        public SSPIClient​(PGStream pgStream,
                          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 stream
        spnServiceClass - SSPI SPN service class, defaults to POSTGRES if null
        enableNegotiate - 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 interface ISSPIClient
        Returns:
        true if it's safe to attempt SSPI authentication
      • continueSSPI

        public void continueSSPI​(int msgLength)
                          throws SQLException,
                                 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 interface ISSPIClient
        Parameters:
        msgLength - Length of message to read, excluding length word and message type word
        Throws:
        SQLException - if something wrong happens
        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 interface ISSPIClient