1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.acegisecurity.providers.cas;
17
18 import org.acegisecurity.AuthenticationException;
19 import org.acegisecurity.userdetails.UserDetails;
20
21
22 /***
23 * Populates the <code>UserDetails</code> associated with a CAS authenticated
24 * user.
25 *
26 * <P>
27 * CAS does not provide the authorities (roles) granted to a user. It merely
28 * authenticates their identity. As the Acegi Security System for Spring needs
29 * to know the authorities granted to a user in order to construct a valid
30 * <code>Authentication</code> object, implementations of this interface will
31 * provide this information.
32 * </p>
33 *
34 * <P>
35 * A {@link UserDetails} is returned by implementations. The
36 * <code>UserDetails</code> must, at minimum, contain the username and
37 * <code>GrantedAuthority[]</code> objects applicable to the CAS-authenticated
38 * user. Note that Acegi Security ignores the password and enabled/disabled
39 * status of the <code>UserDetails</code> because this is
40 * authentication-related and should have been enforced by the CAS server. The
41 * <code>UserDetails</code> returned by implementations is stored in the
42 * generated <code>CasAuthenticationToken</code>, so additional properties
43 * such as email addresses, telephone numbers etc can easily be stored.
44 * </p>
45 *
46 * <P>
47 * Implementations should not perform any caching. They will only be called
48 * when a refresh is required.
49 * </p>
50 *
51 * @author Ben Alex
52 * @version $Id: CasAuthoritiesPopulator.java,v 1.4 2005/11/29 13:10:07 benalex Exp $
53 */
54 public interface CasAuthoritiesPopulator {
55
56
57 /***
58 * Obtains the granted authorities for the specified user.
59 *
60 * <P>
61 * May throw any <code>AuthenticationException</code> or return
62 * <code>null</code> if the authorities are unavailable.
63 * </p>
64 *
65 * @param casUserId as obtained from the CAS validation service
66 *
67 * @return the details of the indicated user (at minimum the granted
68 * authorities and the username)
69 *
70 * @throws AuthenticationException DOCUMENT ME!
71 */
72 public UserDetails getUserDetails(String casUserId)
73 throws AuthenticationException;
74 }