Module waffle.jna
Package waffle.windows.auth

# Interface IWindowsAuthProvider

All Known Implementing Classes:
  `WindowsAuthProviderImpl`

public interface IWindowsAuthProvider
Implements Windows authentication functions.

## Method Summary

Modifier and Type
Method
Description
`IWindowsSecurityContext`
`acceptSecurityToken(String connectionId, byte[] token, String securityPackage)`
Attempts to validate the user using an SSPI token.
`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.

## Method Details

### logonUser

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.

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.

### logonDomainUser

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.

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

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. 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.

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.

### lookupAccount

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.

Parameters:
  `username` - Fully qualified or partial username.
Returns:
  Windows account.

### getCurrentComputer

IWindowsComputer getCurrentComputer()
Retrieve the current computer information.

Returns:
  Current computer information.

### getDomains

IWindowsDomain[] getDomains()
Retrieve a list of domains (Active Directory) on the local server.

Returns:
  A list of domains.

### acceptSecurityToken

IWindowsSecurityContext acceptSecurityToken(String connectionId, byte[] token, String securityPackage)
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

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.

### resetSecurityToken

void resetSecurityToken(String connectionId)
Reset a previously saved continuation security token for a given connection id.

Parameters:
  `connectionId` - Connection id.