01: /*
02: JSPWiki - a JSP-based WikiWiki clone.
03:
04: Copyright (C) 2001-2007 Janne Jalkanen (Janne.Jalkanen@iki.fi)
05:
06: This program is free software; you can redistribute it and/or modify
07: it under the terms of the GNU Lesser General Public License as published by
08: the Free Software Foundation; either version 2.1 of the License, or
09: (at your option) any later version.
10:
11: This program is distributed in the hope that it will be useful,
12: but WITHOUT ANY WARRANTY; without even the implied warranty of
13: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14: GNU Lesser General Public License for more details.
15:
16: You should have received a copy of the GNU Lesser General Public License
17: along with this program; if not, write to the Free Software
18: Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19: */
20: package com.ecyrd.jspwiki.auth;
21:
22: import java.security.Principal;
23: import java.util.Properties;
24:
25: import com.ecyrd.jspwiki.WikiEngine;
26: import com.ecyrd.jspwiki.WikiSession;
27:
28: /**
29: * Interface for service providers of authorization information.
30: * @author Andrew Jaquith
31: * @since 2.3
32: */
33: public interface Authorizer {
34:
35: /**
36: * Returns an array of role Principals this Authorizer knows about.
37: * This method will always return an array; an implementing class may
38: * choose to return an zero-length array if it has no ability to identify
39: * the roles under its control.
40: * @return an array of Principals representing the roles
41: */
42: public Principal[] getRoles();
43:
44: /**
45: * Looks up and returns a role Principal matching a given String.
46: * If a matching role cannot be found, this method returns <code>null</code>.
47: * Note that it may not always be feasible for an Authorizer
48: * implementation to return a role Principal.
49: * @param role the name of the role to retrieve
50: * @return the role Principal
51: */
52: public Principal findRole(String role);
53:
54: /**
55: * Initializes the authorizer.
56: * @param engine the current wiki engine
57: * @param props the wiki engine initialization properties
58: * @throws WikiSecurityException if the Authorizer could not be initialized
59: */
60: public void initialize(WikiEngine engine, Properties props)
61: throws WikiSecurityException;
62:
63: /**
64: * Determines whether the Subject associated with a WikiSession is in a
65: * particular role. This method takes two parameters: the WikiSession
66: * containing the subject and the desired role ( which may be a Role or a
67: * Group). If either parameter is <code>null</code>, this method must
68: * return <code>false</code>.
69: * @param session the current WikiSession
70: * @param role the role to check
71: * @return <code>true</code> if the user is considered to be in the role,
72: * <code>false</code> otherwise
73: */
74: public boolean isUserInRole(WikiSession session, Principal role);
75:
76: }
|