|
Page Created :
SLING :
Authentication Initiation
Authentication Initiation has been created by Felix Meschberger (Apr 21, 2009). Content:Authentication InitiationAuthentication processing is currently implemented using the following components:
This approach currently has two major issues:
To solve these issues, I suggest we add a new API, which may be used to force the initiation of authentication from servlets or scripts. This new API would be implemented such, that a AuthenticationHandler is selected based on some path (just like for the actual authentication) and the AuthenticationHandler.requestAuthentication method is called. Currently the AuthenticationHandler.requestAuthentication method is only called if an authentication request, which has been initiated from the client side for example by submitting a form, failed and must be reissued. With the new approach, this method may also be called to initiate authentication. API extensionA new Authenticator interface is defined: org.apache.sling.engine.auth.Authenticator /** * The <code>Authenticator</code> interface defines the service interface of the * authenticator used by the Sling engine. This service provides a method to * find an {...@link AuthenticationHandler} and call its * {...@link AuthenticationHandler#requestAuthentication(HttpServletRequest, HttpServletResponse)} * method. * <p> * This interface is not intended to be implemented by applications but may be * used to initiate the authentication process form a request processing servlet * or script. * * @since 2.0.4 */ public interface Authenticator {
/**
* Finds an {...@link AuthenticationHandler} for the given request and call its
* {...@link AuthenticationHandler#requestAuthentication(HttpServletRequest, HttpServletResponse)}
* method to initiate an authentication process with the client.
* <p>
* This method must be called on an uncommitted response since the
* implementation may want to reset the response to start the authentication
* process with a clean response. If the response is already committed an
* <code>IllegalStateException</code> is thrown.
* <p>
* After this method has finished, request processing should be terminated
* and the response be considered committed and finished.
*
* @param request The object representing the client request.
* @param response The object representing the response to the client.
* @throws IllegalStateException If the response has already been committed.
*/
public void requestAuthentication(HttpServletRequest request,
HttpServletResponse response);
}
This interface is implemented by the SlingAuthenticator class which is also registered under this service interface. The SlingAuthenticator implementation in fact already has an implementation of this method, which finds an AuthenticationHandler for the request and calls its requestAuthentication method. HTTP Basic Authentication ChangesThe implementation of the HTTP Basic Authentication bundle org.apache.sling.httpauth is modified as follows:
|
Unsubscribe or edit your notifications preferences
