Class DigestScheme

All Implemented Interfaces:
AuthScheme

public class DigestScheme
extends RFC2617Scheme

Digest authentication scheme as defined in RFC 2617. Both MD5 (default) and MD5-sess are supported. Currently only qop=auth or no qop is supported. qop=auth-int is unsupported. If auth and auth-int are provided, auth is used.

Credential charset is configured via the credential charset parameter. Since the digest username is included as clear text in the generated Authentication header, the charset of the username must be compatible with the http element charset.

Since:
4.0
Author:
Remy Maucherat, Rodney Waldhoff, Jeff Dever, Ortwin Glueck, Sean C. Sullivan, Adrian Sutton, Mike Bowler, Oleg Kalnichevski
  • Constructor Details

    • DigestScheme

      public DigestScheme()
      Default constructor for the digest authetication scheme.
  • Method Details

    • processChallenge

      public void processChallenge​(Header header) throws MalformedChallengeException
      Processes the Digest challenge.
      Specified by:
      processChallenge in interface AuthScheme
      Overrides:
      processChallenge in class AuthSchemeBase
      Parameters:
      header - the challenge header
      Throws:
      MalformedChallengeException - is thrown if the authentication challenge is malformed
    • isComplete

      public boolean isComplete()
      Tests if the Digest authentication process has been completed.
      Returns:
      true if Digest authorization has been processed, false otherwise.
    • getSchemeName

      public String getSchemeName()
      Returns textual designation of the digest authentication scheme.
      Returns:
      digest
    • isConnectionBased

      public boolean isConnectionBased()
      Returns false. Digest authentication scheme is request based.
      Returns:
      false.
    • overrideParamter

      public void overrideParamter​(String name, String value)
    • authenticate

      public Header authenticate​(Credentials credentials, HttpRequest request) throws AuthenticationException
      Produces a digest authorization string for the given set of Credentials, method name and URI.
      Parameters:
      credentials - A set of credentials to be used for athentication
      request - The request being authenticated
      Returns:
      a digest authorization string
      Throws:
      InvalidCredentialsException - if authentication credentials are not valid or not applicable for this authentication scheme
      AuthenticationException - if authorization string cannot be generated due to an authentication failure
    • createCnonce

      public static String createCnonce()
      Creates a random cnonce value based on the current time.
      Returns:
      The cnonce value as String.
      Throws:
      UnsupportedDigestAlgorithmException - if MD5 algorithm is not supported.