1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.concurrent;
17
18 import org.acegisecurity.Authentication;
19 import org.acegisecurity.AuthenticationException;
20
21
22 /***
23 * Provides two methods that can be called by an {@link
24 * org.acegisecurity.AuthenticationManager} to integrate with the
25 * concurrent session handling infrastructure.
26 *
27 * @author Ben Alex
28 * @version $Id: ConcurrentSessionController.java,v 1.2 2005/11/17 00:55:56 benalex Exp $
29 */
30 public interface ConcurrentSessionController {
31
32
33 /***
34 * Called by any class that wishes to know whether the current
35 * authentication request should be permitted. Generally callers will be
36 * <code>AuthenticationManager</code>s before they authenticate, but could
37 * equally include <code>Filter</code>s or other interceptors that wish to
38 * confirm the ongoing validity of a previously authenticated
39 * <code>Authentication</code>.
40 *
41 * <p>
42 * The implementation should throw a suitable exception if the user has
43 * exceeded their maximum allowed concurrent sessions.
44 * </p>
45 *
46 * @param request the authentication request (never <code>null</code>)
47 *
48 * @throws AuthenticationException if the user has exceeded their maximum
49 * allowed current sessions
50 */
51 public void checkAuthenticationAllowed(Authentication request)
52 throws AuthenticationException;
53
54 /***
55 * Called by an <code>AuthenticationManager</code> when the authentication
56 * was successful. An implementation is expected to register the
57 * authenticated user in some sort of registry, for future concurrent
58 * tracking via the {@link #checkConcurrentAuthentication(Authentication)}
59 * method.
60 *
61 * @param authentication the successfully authenticated user (never
62 * <code>null</code>)
63 */
64 public void registerSuccessfulAuthentication(Authentication authentication);
65 }