waffle.windows.auth.impl

## Class WindowsAuthProviderImpl

- java.lang.Object
- - waffle.windows.auth.impl.WindowsAuthProviderImpl

All Implemented Interfaces:
  IWindowsAuthProvider

    public class WindowsAuthProviderImpl
    extends Object
    implements IWindowsAuthProvider

Windows Auth Provider.

Author:
  dblock[at]dblock[dot]org

### Constructor Summary

Constructors
Constructor and Description
`WindowsAuthProviderImpl()` Instantiates a new windows auth provider impl.
`WindowsAuthProviderImpl(int continueContextsTimeout)` A Windows authentication provider.

### Method Summary

All Methods Instance Methods Concrete Methods
`IWindowsSecurityContext` `acceptSecurityToken(String connectionId, byte[] token, String securityPackage)` Attempts to validate the user using an SSPI token.
`int` `getContinueContextsSize()` Number of elements in the continue contexts map.
`IWindowsComputer` `getCurrentComputer()` Retrieve the current computer information.
`IWindowsDomain[]` `getDomains()` Retrieve a list of domains (Active Directory) on the local server.
`IWindowsIdentity` `logonDomainUser(String username, String domain, String password)` The LogonDomainUser function attempts to log a user on to the local computer using a network logon type and the default authentication provider.
`IWindowsIdentity` `logonDomainUserEx(String username, String domain, String password, int logonType, int logonProvider)` The LogonDomainUserEx function attempts to log a user on to the local computer.
`IWindowsIdentity` `logonUser(String username, String password)` The LogonUser function attempts to log a user on to the local computer using a network logon type and the default authentication provider.
`IWindowsAccount` `lookupAccount(String username)` Retrieve a security identifier (SID) for the account and the name of the domain or local computer on which the account was found.
`void` `resetSecurityToken(String connectionId)` Reset a previously saved continuation security token for a given connection id.

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

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

### Constructor Detail

#### WindowsAuthProviderImpl

    public WindowsAuthProviderImpl()

Instantiates a new windows auth provider impl.

#### WindowsAuthProviderImpl

    public WindowsAuthProviderImpl(int continueContextsTimeout)

A Windows authentication provider.

Parameters:
  `continueContextsTimeout` - Timeout for security contexts in seconds.

### Method Detail

#### acceptSecurityToken

    public IWindowsSecurityContext acceptSecurityToken(String connectionId,
                                                       byte[] token,
                                                       String securityPackage)

Description copied from interface: `IWindowsAuthProvider`
Attempts to validate the user using an SSPI token. This token is generated by the client via the InitializeSecurityContext(package) method described in https://msdn.microsoft.com/en-us/library/aa375509(VS.85).aspx

Specified by:
  `acceptSecurityToken` in interface `IWindowsAuthProvider`
Parameters:
  `connectionId` - A unique connection id.
  `token` - The security token generated by the client wishing to logon.
  `securityPackage` - The name of the security package to use. Can be any security package supported by both the client and the server. This is usually set to "Negotiate" which will use SPNEGO to determine which security package to use. Other common values are "Kerberos" and "NTLM".
Returns:
  Windows account.

#### getCurrentComputer

    public IWindowsComputer getCurrentComputer()

Description copied from interface: `IWindowsAuthProvider`
Retrieve the current computer information.

Specified by:
  `getCurrentComputer` in interface `IWindowsAuthProvider`
Returns:
  Current computer information.

#### getDomains

    public IWindowsDomain[] getDomains()

Description copied from interface: `IWindowsAuthProvider`
Retrieve a list of domains (Active Directory) on the local server.

Specified by:
  `getDomains` in interface `IWindowsAuthProvider`
Returns:
  A list of domains.

#### logonDomainUser

    public IWindowsIdentity logonDomainUser(String username,
                                            String domain,
                                            String password)

Description copied from interface: `IWindowsAuthProvider`
The LogonDomainUser function attempts to log a user on to the local computer using a network logon type and the default authentication provider.

Specified by:
  `logonDomainUser` in interface `IWindowsAuthProvider`
Parameters:
  `username` - A string that specifies the name of the user. This is the name of the user account to log on to. If you use the user principal name (UPN) format, user@DNS_domain_name, the domain parameter must be NULL.
  `domain` - A string that specifies the name of the domain or server whose account database contains the username account. If this parameter is NULL, the user name must be specified in UPN format. If this parameter is ".", the function validates the account by using only the local account database.
  `password` - A string that specifies the plaintext password for the user account specified by username.
Returns:
  Windows identity.

#### logonDomainUserEx

    public IWindowsIdentity logonDomainUserEx(String username,
                                              String domain,
                                              String password,
                                              int logonType,
                                              int logonProvider)

Description copied from interface: `IWindowsAuthProvider`
The LogonDomainUserEx function attempts to log a user on to the local computer. The local computer is the computer from which LogonUser was called. You cannot use LogonUser to log on to a remote computer. You specify the user with a user name and domain and authenticate the user with a plaintext password.

Specified by:
  `logonDomainUserEx` in interface `IWindowsAuthProvider`
Parameters:
  `username` - A string that specifies the name of the user. This is the name of the user account to log on to. If you use the user principal name (UPN) format, user@DNS_domain_name, the domain parameter must be NULL.
  `domain` - A string that specifies the name of the domain or server whose account database contains the username account. If this parameter is NULL, the user name must be specified in UPN format. If this parameter is ".", the function validates the account by using only the local account database.
  `password` - A string that specifies the plaintext password for the user account specified by username.
  `logonType` - The type of logon operation to perform.
  `logonProvider` - Specifies the logon provider.
Returns:
  Windows identity.

#### logonUser

    public IWindowsIdentity logonUser(String username,
                                      String password)

Description copied from interface: `IWindowsAuthProvider`
The LogonUser function attempts to log a user on to the local computer using a network logon type and the default authentication provider.

Specified by:
  `logonUser` in interface `IWindowsAuthProvider`
Parameters:
  `username` - A string that specifies the name of the user in the UPN format.
  `password` - A string that specifies the plaintext password for the user account specified by username.
Returns:
  Windows identity.

#### lookupAccount

    public IWindowsAccount lookupAccount(String username)

Description copied from interface: `IWindowsAuthProvider`
Retrieve a security identifier (SID) for the account and the name of the domain or local computer on which the account was found.

Specified by:
  `lookupAccount` in interface `IWindowsAuthProvider`
Parameters:
  `username` - Fully qualified or partial username.
Returns:
  Windows account.

#### resetSecurityToken

    public void resetSecurityToken(String connectionId)

Description copied from interface: `IWindowsAuthProvider`
Reset a previously saved continuation security token for a given connection id.

Specified by:
  `resetSecurityToken` in interface `IWindowsAuthProvider`
Parameters:
  `connectionId` - Connection id.

#### getContinueContextsSize

    public int getContinueContextsSize()

Number of elements in the continue contexts map.

Returns:
  Number of elements in the hash map.