Class ProxyDigestAuthenticator
- java.lang.Object
-
- org.glassfish.jersey.jdk.connector.internal.ProxyDigestAuthenticator
-
class ProxyDigestAuthenticator extends java.lang.Object
Generates a value ofAuthorization
header of HTTP request for Digest Http Authentication scheme (RFC 2617).
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) static class
ProxyDigestAuthenticator.Algorithm
(package private) class
ProxyDigestAuthenticator.DigestScheme
Digest scheme POJOprivate static class
ProxyDigestAuthenticator.QOP
-
Field Summary
Fields Modifier and Type Field Description private static java.nio.charset.Charset
CHARACTER_SET
Encoding used for authentication calculations.private static int
CLIENT_NONCE_BYTE_COUNT
private static char[]
HEX_ARRAY
private static java.util.regex.Pattern
KEY_VALUE_PAIR_PATTERN
private static java.util.logging.Logger
logger
private java.security.SecureRandom
randomGenerator
-
Constructor Summary
Constructors Constructor Description ProxyDigestAuthenticator()
-
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 tokenprivate 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
-
-
-
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
-
-
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 ofWWW-Authenticate
header- Returns:
- DigestScheme or
null
if no digest header exists. - Throws:
java.io.IOException
-
createNextAuthToken
private java.lang.String createNextAuthToken(ProxyDigestAuthenticator.DigestScheme ds, java.lang.String uri, java.lang.String method, java.lang.String userName, java.lang.String password) throws ProxyAuthenticationException
Creates digest string including counter.- Parameters:
ds
- DigestScheme instanceuri
- client request uri- Returns:
- digest authentication token string
- Throws:
ProxyAuthenticationException
- if MD5 hash fails
-
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 instancekey
- key stringvalue
- value stringuseQuote
- 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 instancekey
- key stringvalue
- 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
-
-