org.hackystat.dailyprojectdata.server
Class Authenticator

java.lang.Object
  extended by org.restlet.Uniform
      extended by org.restlet.Restlet
          extended by org.restlet.Filter
              extended by org.restlet.Guard
                  extended by org.hackystat.dailyprojectdata.server.Authenticator

public class Authenticator
extends org.restlet.Guard

Performs authentication of each HTTP request using HTTP Basic authentication. Checks user/password credentials by pinging SensorBase, then caching authentic user/password combinations. If a cached user/password combo does not match the current user/password combo, then the SensorBase is pinged again (because maybe the user has changed their password recently).

Because DPD resources will always want to communicate with the underlying SensorBase, this Authenticator also creates a map of user-to-SensorBaseClient instances which can be retrieved from the server context. This keeps the user password info in this class, while making the SensorBaseClient instance available to the service.

Author:
Philip Johnson

Field Summary
static java.lang.String AUTHENTICATOR_SENSORBASECLIENTS_KEY
          The key to be used to retrieve the sensorbaseclient map from the server context.
 
Fields inherited from class org.restlet.Guard
AUTHENTICATION_INVALID, AUTHENTICATION_MISSING, AUTHENTICATION_STALE, AUTHENTICATION_VALID, DEFAULT_NONCE_LIFESPAN_MILLIS
 
Fields inherited from class org.restlet.Filter
CONTINUE, SKIP, STOP
 
Constructor Summary
Authenticator(org.restlet.Context context, java.lang.String sensorBaseHost)
          Initializes this Guard to do HTTP Basic authentication.
 
Method Summary
 boolean checkSecret(org.restlet.data.Request request, java.lang.String identifier, char[] secretCharArray)
          Returns true if the passed credentials are OK.
 
Methods inherited from class org.restlet.Guard
accept, authenticate, authorize, challenge, challenge, checkSecret, doHandle, findSecret, forbid, getDomainUris, getNonceLifespan, getRealm, getScheme, getSecretResolver, getSecrets, getServerKey, isRechallengeEnabled, setDomainUris, setNonceLifespan, setRealm, setRechallengeEnabled, setScheme, setSecretResolver, setServerKey
 
Methods inherited from class org.restlet.Filter
afterHandle, beforeHandle, getNext, handle, hasNext, setNext, setNext
 
Methods inherited from class org.restlet.Restlet
getApplication, getContext, getLogger, init, isStarted, isStopped, setContext, start, stop
 
Methods inherited from class org.restlet.Uniform
delete, delete, get, get, handle, head, head, options, options, post, post, put, put
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

AUTHENTICATOR_SENSORBASECLIENTS_KEY

public static final java.lang.String AUTHENTICATOR_SENSORBASECLIENTS_KEY
The key to be used to retrieve the sensorbaseclient map from the server context.

See Also:
Constant Field Values
Constructor Detail

Authenticator

public Authenticator(org.restlet.Context context,
                     java.lang.String sensorBaseHost)
Initializes this Guard to do HTTP Basic authentication. Puts the credentials map in the server context so that Resources can get the password associated with the uriUser for their own invocations to the SensorBase.

Parameters:
context - The server context.
sensorBaseHost - The host, such as 'http://localhost:9876/sensorbase/'.
Method Detail

checkSecret

public boolean checkSecret(org.restlet.data.Request request,
                           java.lang.String identifier,
                           char[] secretCharArray)
Returns true if the passed credentials are OK.

Overrides:
checkSecret in class org.restlet.Guard
Parameters:
request - Ignored.
identifier - The account name.
secretCharArray - The password.
Returns:
If the credentials are valid.