Files
narya/src/java/com/threerings/presents/server/Authenticator.java
T
Michael Bayne 9e16e87a69 Doris the refactorasaurus. Restructured the whole client object resolution
process so that it can be done by other entities than just the client
management services. Coordination between these parties is managed so that
no toes are stepped on in the course of loading and unloading clients and
everything is generally much nicer.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1086 542714f4-19e9-0310-aa3c-eee0fc999fb1
2002-03-05 05:33:25 +00:00

68 lines
2.5 KiB
Java

//
// $Id: Authenticator.java,v 1.5 2002/03/05 05:33:25 mdb Exp $
package com.threerings.presents.server;
import com.threerings.presents.net.AuthResponse;
import com.threerings.presents.net.AuthResponseData;
import com.threerings.presents.server.net.AuthingConnection;
import com.threerings.presents.server.net.ConnectionManager;
/**
* The authenticator is a pluggable component of the authentication
* framework. The base class handles the basic mechanics of authentication
* and a system would extend the base authenticator and add code that does
* the actual client authentication.
*/
public abstract class Authenticator
{
/**
* Called by the connection manager to give us a reference to it for
* reporting authenticated connections.
*/
public void setConnectionManager (ConnectionManager conmgr)
{
_conmgr = conmgr;
}
/**
* Called by the connection management code when an authenticating
* connection has received its authentication request from the client.
* This method must return immediately as it is called on the
* connection manager thread. If it is possible to authenticate the
* connection immediately, it may do so, but more likely it will fire
* off a task on the {@link PresentsServer#invoker} to perform the
* authentication. When the authentication is complete, the
* authenticator implementation should call {@link
* #connectionWasAuthenticated}.
*/
public abstract void authenticateConnection (AuthingConnection conn);
/**
* This is called by authenticator implementations when they have
* completed the authentication process. It will deliver the response
* to the user and let the connection manager know to report the
* authentication if it succeeded.
*/
protected void connectionWasAuthenticated (
AuthingConnection conn, AuthResponse rsp)
{
// now ship the response back
conn.postMessage(rsp);
// stuff a reference to the auth response into the connection so
// that we have access to it later in the authentication process
conn.setAuthResponse(rsp);
// if the authentication request was granted, let the connection
// manager know that we just authed
if (AuthResponseData.SUCCESS.equals(rsp.getData().code)) {
_conmgr.connectionDidAuthenticate(conn);
}
}
/** The connection manager with which we're working. */
protected ConnectionManager _conmgr;
}