org.apache.hc.client5.http.impl.win

## Class WindowsNegotiateScheme

- java.lang.Object
- - org.apache.hc.client5.http.impl.win.WindowsNegotiateScheme

- All Implemented Interfaces:
    AuthScheme

      @Experimental
      public class WindowsNegotiateScheme
      extends Object
      implements AuthScheme

  Auth scheme that makes use of JNA to implement Negotiate and NTLM on Windows Platforms.

  This will delegate negotiation to the windows machine.

  Since:
    4.4

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `dispose()`
    `String` | `generateAuthResponse(org.apache.hc.core5.http.HttpHost host, org.apache.hc.core5.http.HttpRequest request, org.apache.hc.core5.http.protocol.HttpContext context)` Generates an authorization response based on the current state.
    `static String` | `getCurrentUsername()` Get the SAM-compatible username of the currently logged-on user.
    `String` | `getName()` Returns textual designation of the given authentication scheme.
    `Principal` | `getPrincipal()` Returns `Principal` whose credentials are used to generate an authentication response.
    `String` | `getRealm()` Returns authentication realm.
    `boolean` | `isChallengeComplete()` Authentication process may involve a series of challenge-response exchanges.
    `boolean` | `isConnectionBased()` Determines if the authentication scheme is expected to provide an authorization response on a per connection basis instead of the standard per request basis
    `boolean` | `isResponseReady(org.apache.hc.core5.http.HttpHost host, CredentialsProvider credentialsProvider, org.apache.hc.core5.http.protocol.HttpContext context)` Determines whether or not an authorization response can be generated based on the actual authentication state.
    `void` | `processChallenge(AuthChallenge authChallenge, org.apache.hc.core5.http.protocol.HttpContext context)` Processes the given auth challenge.

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

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

- - ### Method Detail

    - #### dispose

          public void dispose()

    - #### getName

          public String getName()

      Description copied from interface: `AuthScheme`
      Returns textual designation of the given authentication scheme.
      Specified by:
        `getName` in interface `AuthScheme`
      Returns:
        the name of the given authentication scheme

    - #### isConnectionBased

          public boolean isConnectionBased()

      Description copied from interface: `AuthScheme`
      Determines if the authentication scheme is expected to provide an authorization response on a per connection basis instead of the standard per request basis
      Specified by:
        `isConnectionBased` in interface `AuthScheme`
      Returns:
        `true` if the scheme is connection based, `false` if the scheme is request based.

    - #### getRealm

          public String getRealm()

      Description copied from interface: `AuthScheme`
      Returns authentication realm. If the concept of an authentication realm is not applicable to the given authentication scheme, returns `null`.
      Specified by:
        `getRealm` in interface `AuthScheme`
      Returns:
        the authentication realm

    - #### processChallenge

          public void processChallenge(AuthChallenge authChallenge,
                              org.apache.hc.core5.http.protocol.HttpContext context)
                                throws MalformedChallengeException

      Description copied from interface: `AuthScheme`
      Processes the given auth challenge. Some authentication schemes may involve multiple challenge-response exchanges. Such schemes must be able to maintain internal state when dealing with sequential challenges
      Specified by:
        `processChallenge` in interface `AuthScheme`
      Parameters:
        `authChallenge` - the auth challenge
        `context` - HTTP context
      Throws:
        `MalformedChallengeException` - in case the auth challenge is incomplete, malformed or otherwise invalid.

    - #### isResponseReady

          public boolean isResponseReady(org.apache.hc.core5.http.HttpHost host,
                                CredentialsProvider credentialsProvider,
                                org.apache.hc.core5.http.protocol.HttpContext context)
                                  throws AuthenticationException

      Description copied from interface: `AuthScheme`
      Determines whether or not an authorization response can be generated based on the actual authentication state. Generally the outcome of this method will depend upon availability of user credentials necessary to produce an authorization response.
      Specified by:
        `isResponseReady` in interface `AuthScheme`
        `credentialsProvider` - The credentials to be used for authentication
        `context` - HTTP context
      Returns:
        `true` if an authorization response can be generated and the authentication handshake can proceed, `false` otherwise.
      Throws:
        `AuthenticationException` - if authorization string cannot be generated due to an authentication failure

    - #### getCurrentUsername

          public static String getCurrentUsername()

      Get the SAM-compatible username of the currently logged-on user.
      Returns:
        String.

    - #### getPrincipal

          public Principal getPrincipal()

      Description copied from interface: `AuthScheme`
      Returns `Principal` whose credentials are used to generate an authentication response. Connection based schemes are required to return a user `Principal` if authorization applies to for the entire life span of connection.
      Specified by:
        `getPrincipal` in interface `AuthScheme`
      Returns:
        user principal
      See Also:
        `AuthScheme.isConnectionBased()`

    - #### generateAuthResponse

          public String generateAuthResponse(org.apache.hc.core5.http.HttpHost host,
                                    org.apache.hc.core5.http.HttpRequest request,
                                    org.apache.hc.core5.http.protocol.HttpContext context)
                                      throws AuthenticationException

      Description copied from interface: `AuthScheme`
      Generates an authorization response based on the current state. Some authentication schemes may need to load user credentials required to generate an authorization response from a `CredentialsProvider` prior to this method call.
      Specified by:
        `generateAuthResponse` in interface `AuthScheme`
        `request` - The request being authenticated
        `context` - HTTP context
      Returns:
        authorization header
      Throws:
        `AuthenticationException` - if authorization string cannot be generated due to an authentication failure
      See Also:
        `AuthScheme.isResponseReady(HttpHost, CredentialsProvider, HttpContext)`

    - #### isChallengeComplete

          public boolean isChallengeComplete()

      Description copied from interface: `AuthScheme`
      Authentication process may involve a series of challenge-response exchanges. This method tests if the authorization process has been fully completed (either successfully or unsuccessfully), that is, all the required authorization challenges have been processed in their entirety.
      Specified by:
        `isChallengeComplete` in interface `AuthScheme`
      Returns:
        `true` if the authentication process has been completed, `false` otherwise.

Copyright © 1999–2021 The Apache Software Foundation. All rights reserved.