HTTPClient
Class DefaultAuthHandler
java.lang.Object
|
+--HTTPClient.DefaultAuthHandler
- All Implemented Interfaces:
- AuthorizationHandler, HTTPClient.GlobalConstants
- public class DefaultAuthHandler
- extends java.lang.Object
- implements AuthorizationHandler, HTTPClient.GlobalConstants
This class is the default authorization handler. It currently handles the
authentication schemes "Basic", "Digest", and "SOCKS5" (used for the
SocksClient and not part of HTTP per se).
By default, when a username and password is required, this handler throws
up a message box requesting the desired info. However, applications can
set their
own authorization prompter if desired.
Note: all methods except for
setAuthorizationPrompter are meant to be invoked by the
AuthorizationModule only, i.e. should not be invoked by the application
(those methods are only public because implementing the
AuthorizationHandler interface requires them to be).
- Since:
- V0.2
| Type | Method |
AuthorizationInfo |
fixupAuthInfo(AuthorizationInfo info,
RoRequest req,
AuthorizationInfo challenge,
RoResponse resp)
For Digest authentication we need to set the uri, response and
opaque parameters. |
AuthorizationInfo |
getAuthorization(AuthorizationInfo challenge,
RoRequest req,
RoResponse resp)
returns the requested authorization, or null if none was given. |
void |
handleAuthHeaders(Response resp,
RoRequest req,
AuthorizationInfo prev,
AuthorizationInfo prxy)
We handle the "Authentication-Info" and "Proxy-Authentication-Info"
headers here. |
void |
handleAuthTrailers(Response resp,
RoRequest req,
AuthorizationInfo prev,
AuthorizationInfo prxy)
We handle the "Authentication-Info" and "Proxy-Authentication-Info"
trailers here. |
static AuthorizationPrompter |
setAuthorizationPrompter(AuthorizationPrompter prompt)
Set a new username/password prompter. |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
HTTP
public static final int HTTP
- possible http protocols we (might) handle
HTTPS
public static final int HTTPS
SHTTP
public static final int SHTTP
HTTP_NG
public static final int HTTP_NG
HTTP_1_0
public static final int HTTP_1_0
- some known http versions
HTTP_1_1
public static final int HTTP_1_1
CD_NONE
public static final int CD_NONE
- Content delimiters
CD_HDRS
public static final int CD_HDRS
CD_0
public static final int CD_0
CD_CLOSE
public static final int CD_CLOSE
CD_CONTLEN
public static final int CD_CONTLEN
CD_CHUNKED
public static final int CD_CHUNKED
CD_MP_BR
public static final int CD_MP_BR
DefaultAuthHandler
public DefaultAuthHandler()
fixupAuthInfo
public AuthorizationInfo fixupAuthInfo(AuthorizationInfo info,
RoRequest req,
AuthorizationInfo challenge,
RoResponse resp)
throws AuthSchemeNotImplException
- For Digest authentication we need to set the uri, response and
opaque parameters. For "Basic" and "SOCKS5" nothing is done.
- Specified by:
fixupAuthInfo in interface AuthorizationHandler
- Following copied from interface:
HTTPClient.AuthorizationHandler
- Parameters:
info - the authorization info retrieved from the list of
known info.req - the request this info is targeted for.challenge - the authorization challenge received from the server
if this is in response to a 401, or null if we are
preemptively sending the info.resp - the full 401 response received, or null if we are
preemptively sending the info.- Returns:
- the authorization info to be sent with the request, or null
if none is to be sent.
- Throws:
AuthSchemeNotImplException - if the authorization scheme
in the info cannot be handled.java.io.IOException - if an exception occurs while fixing up the
info
getAuthorization
public AuthorizationInfo getAuthorization(AuthorizationInfo challenge,
RoRequest req,
RoResponse resp)
throws AuthSchemeNotImplException,
java.io.IOException
- returns the requested authorization, or null if none was given.
- Specified by:
getAuthorization in interface AuthorizationHandler
- Parameters:
challenge - the parsed challenge from the server.req - the request which solicited this responseresp - the full response received- Returns:
- a structure containing the necessary
authorization info,
or null
- Throws:
AuthSchemeNotImplException - if the authentication scheme
in the challenge cannot be handled.
handleAuthHeaders
public void handleAuthHeaders(Response resp,
RoRequest req,
AuthorizationInfo prev,
AuthorizationInfo prxy)
throws java.io.IOException
- We handle the "Authentication-Info" and "Proxy-Authentication-Info"
headers here.
- Specified by:
handleAuthHeaders in interface AuthorizationHandler
- Following copied from interface:
HTTPClient.AuthorizationHandler
- Parameters:
resp - the full Responsereq - the Request which provoked this responseprev - the previous auth info sent, or null if none was sentprxy - the previous proxy auth info sent,
or null if none was sent- Throws:
java.io.IOException - if an exception occurs during the reading of
the headers.
handleAuthTrailers
public void handleAuthTrailers(Response resp,
RoRequest req,
AuthorizationInfo prev,
AuthorizationInfo prxy)
throws java.io.IOException
- We handle the "Authentication-Info" and "Proxy-Authentication-Info"
trailers here.
- Specified by:
handleAuthTrailers in interface AuthorizationHandler
- Following copied from interface:
HTTPClient.AuthorizationHandler
- Parameters:
resp - the full Responsereq - the Request which provoked this responseprev - the previous auth info sent, or null if none was sentprxy - the previous proxy auth info sent,
or null if none was sent- Throws:
java.io.IOException - if an exception occurs during the reading of
the trailers.- See Also:
AuthorizationHandler.handleAuthHeaders(HTTPClient.Response,
HTTPClient.RoRequest, HTTPClient.AuthorizationInfo, HTTPClient.AuthorizationInfo)
setAuthorizationPrompter
public static AuthorizationPrompter setAuthorizationPrompter(AuthorizationPrompter prompt)
- Set a new username/password prompter.
- Parameters:
prompt - the AuthorizationPrompter to use whenever a username
and password are needed; if null, no querying will be
done- Returns:
- the previous prompter