Apache CXF API

org.apache.cxf.transport.http
Class HttpBasicAuthSupplier

java.lang.Object
  extended by org.apache.cxf.transport.http.HttpBasicAuthSupplier

public abstract class HttpBasicAuthSupplier
extends java.lang.Object

This abstract class is extended by developers who need HTTP Basic Auth functionality on the client side. It supplies userid and password combinations to an HTTPConduit.

The HTTPConduit will make a call to getPreemptiveUserPass before an HTTP request is made. The HTTPConduit will call on getUserPassForRealm upon getting a 401 HTTP Response with a "WWW-Authenticate: Basic realm=????" header.

A HTTPConduit keeps a reference to this HttpBasicAuthSupplier for the life of the HTTPConduit, unless changed out by dynamic configuration. Therefore, an implementation of this HttpBasicAuthSupplier may maintain state for subsequent calls.

For instance, an implemenation may not provide a UserPass preemptively for a particular URL and decide to get the realm information from a 401 response in which the HTTPConduit will call getUserPassForReam for that URL. Then this implementation may provide the UserPass for this particular URL preemptively for subsequent calls to getPreemptiveUserPass.


Nested Class Summary
static class HttpBasicAuthSupplier.UserPass
          This class is used to return the values of the userid and password used in the HTTP Authorization Header.
 
Field Summary
protected  java.lang.String logicalName
          This field contains the logical name of this HttpBasicAuthSuppler.
 
Constructor Summary
protected HttpBasicAuthSupplier()
          The default constructor assigns the class name as the LogicalName.
protected HttpBasicAuthSupplier(java.lang.String name)
          This constructor assigns the LogicalName of this HttpBasicAuthSupplier.
 
Method Summary
protected  HttpBasicAuthSupplier.UserPass createUserPass(java.lang.String userid, java.lang.String password)
          This method is used by extensions of this class to create a UserPass to return.
 java.lang.String getLogicalName()
          This method returns the LogicalName of this HttpBasicAuthSupplier.
abstract  HttpBasicAuthSupplier.UserPass getPreemptiveUserPass(java.lang.String conduitName, java.net.URL currentURL, Message message)
          The HTTPConduit makes a call to this method before connecting to the server behind a particular URL.
abstract  HttpBasicAuthSupplier.UserPass getUserPassForRealm(java.lang.String conduitName, java.net.URL currentURL, Message message, java.lang.String realm)
          The HTTPConduit makes a call to this method if it receives a 401 response to a particular URL for a given message.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

logicalName

protected java.lang.String logicalName
This field contains the logical name of this HttpBasicAuthSuppler. This field is not assigned to be final, since an extension may be Spring initialized as a bean, have an appropriate setLogicalName method, and set this field.

Constructor Detail

HttpBasicAuthSupplier

protected HttpBasicAuthSupplier()
The default constructor assigns the class name as the LogicalName.


HttpBasicAuthSupplier

protected HttpBasicAuthSupplier(java.lang.String name)
This constructor assigns the LogicalName of this HttpBasicAuthSupplier.

Parameters:
name - The Logical Name.
Method Detail

getLogicalName

public java.lang.String getLogicalName()
This method returns the LogicalName of this HttpBasicAuthSupplier.


createUserPass

protected HttpBasicAuthSupplier.UserPass createUserPass(java.lang.String userid,
                                                        java.lang.String password)
This method is used by extensions of this class to create a UserPass to return.

Parameters:
userid - The userid that will be returned from getUserid(). This argument must not contain a colon (":"). If it does, it will throw an IllegalArgumentException.
password - The password that will be returned from getPassword().
Returns:

getPreemptiveUserPass

public abstract HttpBasicAuthSupplier.UserPass getPreemptiveUserPass(java.lang.String conduitName,
                                                                     java.net.URL currentURL,
                                                                     Message message)
The HTTPConduit makes a call to this method before connecting to the server behind a particular URL. If this implementation does not have a UserPass for this URL, it should return null.

Parameters:
conduitName - The HTTPConduit making the call.
currentURL - The URL to which the request is to be made.
message - The CXF Message.
Returns:
This method returns null if no UserPass is available.

getUserPassForRealm

public abstract HttpBasicAuthSupplier.UserPass getUserPassForRealm(java.lang.String conduitName,
                                                                   java.net.URL currentURL,
                                                                   Message message,
                                                                   java.lang.String realm)
The HTTPConduit makes a call to this method if it receives a 401 response to a particular URL for a given message. The realm information is taken from the "WWW-Authenticate: Basic realm=?????" header. The current message may be retransmitted if this call returns a UserPass. The current message will fail with a 401 if null is returned. If no UserPass is available for this particular URL, realm, and message, then null should be returned.

Parameters:
conduitName - The name of the conduit making the call.
currentURL - The current URL from which the reponse came.
message - The CXF Message.
realm - The realm extraced from the basic auth header.
Returns:

Apache CXF API

Apache CXF is an effort undergoing incubation at the Apache Software Foundation(ASF) and sponsored by the Apache Incubator PMC.