Class ProxyDigestAuthenticator


  • class ProxyDigestAuthenticator
    extends java.lang.Object
    Generates a value of Authorization header of HTTP request for Digest Http Authentication scheme (RFC 2617).
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private static void append​(java.lang.StringBuilder sb, java.lang.String key, java.lang.String value)
      Append comma separated key=value token.
      private static void append​(java.lang.StringBuilder sb, java.lang.String key, java.lang.String value, boolean useQuote)
      Append comma separated key=value token
      private static java.lang.String bytesToHex​(byte[] bytes)
      Convert bytes array to hex string.
      private java.lang.String createNextAuthToken​(ProxyDigestAuthenticator.DigestScheme ds, java.lang.String uri, java.lang.String method, java.lang.String userName, java.lang.String password)
      Creates digest string including counter.
      (package private) java.lang.String generateAuthorizationHeader​(java.net.URI uri, java.lang.String method, java.lang.String authenticateHeader, java.lang.String userName, java.lang.String password)  
      private static java.lang.String md5​(java.lang.String... tokens)
      Colon separated value MD5 hash.
      private ProxyDigestAuthenticator.DigestScheme parseAuthHeaders​(java.lang.String authHeader)
      Parse digest header.
      private java.lang.String randomBytes​(int nbBytes)
      Generate a random sequence of bytes and return its hex representation
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • CHARACTER_SET

        private static final java.nio.charset.Charset CHARACTER_SET
        Encoding used for authentication calculations.
      • logger

        private static final java.util.logging.Logger logger
      • HEX_ARRAY

        private static final char[] HEX_ARRAY
      • KEY_VALUE_PAIR_PATTERN

        private static final java.util.regex.Pattern KEY_VALUE_PAIR_PATTERN
      • CLIENT_NONCE_BYTE_COUNT

        private static final int CLIENT_NONCE_BYTE_COUNT
        See Also:
        Constant Field Values
      • randomGenerator

        private java.security.SecureRandom randomGenerator
    • Constructor Detail

      • ProxyDigestAuthenticator

        ProxyDigestAuthenticator()
    • Method Detail

      • generateAuthorizationHeader

        java.lang.String generateAuthorizationHeader​(java.net.URI uri,
                                                     java.lang.String method,
                                                     java.lang.String authenticateHeader,
                                                     java.lang.String userName,
                                                     java.lang.String password)
                                              throws ProxyAuthenticationException
        Throws:
        ProxyAuthenticationException
      • parseAuthHeaders

        private ProxyDigestAuthenticator.DigestScheme parseAuthHeaders​(java.lang.String authHeader)
                                                                throws java.io.IOException
        Parse digest header.
        Parameters:
        authHeader - value of WWW-Authenticate header
        Returns:
        DigestScheme or null if no digest header exists.
        Throws:
        java.io.IOException
      • append

        private static void append​(java.lang.StringBuilder sb,
                                   java.lang.String key,
                                   java.lang.String value,
                                   boolean useQuote)
        Append comma separated key=value token
        Parameters:
        sb - string builder instance
        key - key string
        value - value string
        useQuote - true if value needs to be enclosed in quotes
      • append

        private static void append​(java.lang.StringBuilder sb,
                                   java.lang.String key,
                                   java.lang.String value)
        Append comma separated key=value token. The value gets enclosed in quotes.
        Parameters:
        sb - string builder instance
        key - key string
        value - value string
      • bytesToHex

        private static java.lang.String bytesToHex​(byte[] bytes)
        Convert bytes array to hex string.
        Parameters:
        bytes - array of bytes
        Returns:
        hex string
      • md5

        private static java.lang.String md5​(java.lang.String... tokens)
                                     throws ProxyAuthenticationException
        Colon separated value MD5 hash.
        Parameters:
        tokens - one or more strings
        Returns:
        M5 hash string
        Throws:
        ProxyAuthenticationException - if MD5 algorithm cannot be instantiated
      • randomBytes

        private java.lang.String randomBytes​(int nbBytes)
        Generate a random sequence of bytes and return its hex representation
        Parameters:
        nbBytes - number of bytes to generate
        Returns:
        hex string