private Map<String, String> parseTokenValue(String token) {
        val tokenizer = new StringTokenizer(token, ", ");
        String keyval;
        Map<String, String> map = new HashMap<>();
        while (tokenizer.hasMoreElements()) {
            keyval = tokenizer.nextToken();
            if (keyval.contains("=")) {
                val key = keyval.substring(0, keyval.indexOf("="));
                val value = keyval.substring(keyval.indexOf("=") + 1);
                map.put(key.trim(), value.replaceAll("\"", Pac4jConstants.EMPTY_STRING).trim());
            }
        }
        return map;
    }
{@inheritDoc}

Extracts digest Authorization header components.
As per RFC 2617 :
username is the user's name in the specified realm
qop is quality of protection
uri is the request uri
response is the client response
nonce is a server-specified data string which should be uniquely generated
  each time a 401 response is made
cnonce is the client nonce
nc is the nonce count
If in the Authorization header it is not specified a username and response, we throw CredentialsException because
the client uses an username and a password to authenticate. response is just a MD5 encoded value
based on user provided password and RFC 2617 digest authentication encoding rules
pac4j-http/src/main/java/org/pac4j/http/credentials/extractor/DigestAuthExtractor.java