Package org.firebirdsql.gds.ng.wire.auth

## Class ClientAuthBlock

- java.lang.Object
- - org.firebirdsql.gds.ng.wire.auth.ClientAuthBlock

    public final class ClientAuthBlock
    extends java.lang.Object

Manages client authentication with multiple pluginProviders.

This is similar to the `ClntAuthBlock` in Firebird. For ease of understanding, and correlating with the Firebird implementation, this uses the same (or very similar) terms and structure (if it makes sense).

Since:
  3.0
Author:
  Mark Rotteveel

### Constructor Summary

Constructors
`ClientAuthBlock​(IAttachProperties<?> attachProperties)`

### Method Summary

All Methods Instance Methods Concrete Methods
`AuthenticationPlugin.AuthStatus` `authenticate()`
`void` `authenticateStep0()`
`void` `authFillParametersBlock​(ConnectionParameterBuffer pb)`
`byte[]` `getClientData()`
`java.lang.String` `getCurrentPluginName()`
`java.lang.String` `getLogin()`
`java.lang.String` `getNormalizedLogin()`
`java.lang.String` `getPassword()`
`java.lang.String` `getPluginNames()`
`byte[]` `getSessionKey()`
`boolean` `hasPlugin()`
`boolean` `isAuthComplete()`
`boolean` `isFirstTime()`
`void` `resetClient​(byte[] serverInfo)`
`void` `setAuthComplete​(boolean authComplete)`
`void` `setFirstTime​(boolean firstTime)`
`void` `setServerData​(byte[] serverData)`
`boolean` `supportsEncryption()` TODO Need to handle this differently
`boolean` `switchPlugin​(java.lang.String pluginName)`
`void` `writePluginDataTo​(java.io.OutputStream userId)`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ClientAuthBlock

    public ClientAuthBlock​(IAttachProperties<?> attachProperties)
                    throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

### Method Detail

#### getLogin

    public java.lang.String getLogin()

#### getNormalizedLogin

    public java.lang.String getNormalizedLogin()

#### getPassword

    public java.lang.String getPassword()

#### isAuthComplete

    public boolean isAuthComplete()

#### setAuthComplete

    public void setAuthComplete​(boolean authComplete)

#### getCurrentPluginName

    public java.lang.String getCurrentPluginName()

#### getPluginNames

    public java.lang.String getPluginNames()

Returns:
  Comma separated list of available plugins.

#### getClientData

    public byte[] getClientData()

#### setFirstTime

    public void setFirstTime​(boolean firstTime)

#### isFirstTime

    public boolean isFirstTime()

#### authenticateStep0

    public void authenticateStep0()
                           throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### resetClient

    public void resetClient​(byte[] serverInfo)
                     throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### setServerData

    public void setServerData​(byte[] serverData)

#### writePluginDataTo

    public void writePluginDataTo​(java.io.OutputStream userId)
                           throws java.io.IOException

Throws:
  `java.io.IOException`

#### switchPlugin

    public boolean switchPlugin​(java.lang.String pluginName)

#### hasPlugin

    public boolean hasPlugin()

#### authenticate

    public AuthenticationPlugin.AuthStatus authenticate()
                                                 throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### authFillParametersBlock

    public void authFillParametersBlock​(ConnectionParameterBuffer pb)
                                 throws java.sql.SQLException

Throws:
  `java.sql.SQLException`

#### supportsEncryption

    public boolean supportsEncryption()
                               throws java.sql.SQLException

TODO Need to handle this differently

Returns:
  `true` if the encryption is supported
Throws:
  `java.sql.SQLException` - If it is impossible to determine if encryption is supported (eg there is no current auth plugin)

#### getSessionKey

    public byte[] getSessionKey()
                         throws java.sql.SQLException

Returns:
  Session key
Throws:
  `java.sql.SQLException` - If a session key cannot be provided