| | |
| | | You should have received a copy of the GNU Affero General Public License |
| | | along with this program. If not, see <http://www.gnu.org/licenses/>. |
| | | */ |
| | | |
| | | package de.uhilger.transit.web; |
| | | |
| | | import java.security.*; |
| | |
| | | import javax.servlet.http.HttpServletResponse; |
| | | |
| | | /** |
| | | * Ein Filter zur Pruefung von Berechtigungen zum Einsatz in einer |
| | | * Java EE konformen Webanwendung. Zum Einbau wird diese Klasse |
| | | * im Deployment Desciptor (web.xml) deklariert. |
| | | * Ein Filter zur Pruefung von Berechtigungen zum Einsatz in einer Java EE |
| | | * konformen Webanwendung. Zum Einbau wird diese Klasse im Deployment Desciptor |
| | | * (web.xml) deklariert. |
| | | * |
| | | * @author Copyright (c) Ulrich Hilger, http://uhilger.de |
| | | * @author Published under the terms and conditions of |
| | | * the <a href="http://www.gnu.org/licenses/agpl-3.0" target="_blank">GNU Affero General Public License</a> |
| | | * @author Published under the terms and conditions of the |
| | | * <a href="http://www.gnu.org/licenses/agpl-3.0" target="_blank">GNU Affero |
| | | * General Public License</a> |
| | | * |
| | | * @version 1, September 16, 2012 |
| | | */ |
| | | public class Waechter implements Filter { |
| | | |
| | | /** Name, der als Benutzername verwendet wird, wenn kein Benutzer angemeldet ist */ |
| | | /** |
| | | * Name, der als Benutzername verwendet wird, wenn kein Benutzer angemeldet |
| | | * ist |
| | | */ |
| | | public static final String ANONYMER_NUTZER = "anonymous"; |
| | | |
| | | /** Das Objekt zur Pruefung von Berechtigungen */ |
| | | /** |
| | | * Das Objekt zur Pruefung von Berechtigungen |
| | | */ |
| | | protected RechtePruefer rechtePruefer; |
| | | |
| | | protected String className; |
| | |
| | | protected String userName; |
| | | |
| | | /** |
| | | * Pruefen, ob der zur Zeit angemeldete Benutzer eine HTTP-Anfrage |
| | | * ausfuehren darf, die einen Methodenaufruf der Klassenbibliothek |
| | | * Transit enthaelt. |
| | | * Pruefen, ob der zur Zeit angemeldete Benutzer eine HTTP-Anfrage ausfuehren |
| | | * darf, die einen Methodenaufruf der Klassenbibliothek Transit enthaelt. |
| | | * |
| | | * Anfragen, die berechtigt sind, werden zur Verarbeitung weiter gereicht. |
| | | * Ist eine Anfrage nicht berechtigt, wird die Anfrage nicht weiter |
| | | * gereicht und eine Servlet Exception erzeugt. |
| | | * Anfragen, die berechtigt sind, werden zur Verarbeitung weiter gereicht. Ist |
| | | * eine Anfrage nicht berechtigt, wird die Anfrage nicht weiter gereicht und |
| | | * eine Servlet Exception erzeugt. |
| | | * |
| | | * @param request die zu pruefende Anfrage |
| | | * @param response die Antowrt des Servers |
| | |
| | | if(rechtePruefer.istErlaubt(request, response, className, methodName, userName)) { |
| | | chain.doFilter(request, response); |
| | | } else { |
| | | throw new ServletException("Der Benutzer " + userName + |
| | | " darf die Methode " + className + "." + methodName + " nicht ausfuehren."); |
| | | throw new ServletException("Der Benutzer " + userName |
| | | + " darf die Methode " + className + "." + methodName + " nicht ausfuehren."); |
| | | } |
| | | } |
| | | } |
| | |
| | | * Den Namen des angemeldeten Benutzers ermitteln. |
| | | * |
| | | * @param req die Anfrage, deren Benutzer ermittelt werden soll |
| | | * @return Name des Benutzers oder <code>anonymous</code>, wenn |
| | | * kein Benutzer angemeldet ist |
| | | * @return Name des Benutzers oder <code>anonymous</code>, wenn kein Benutzer |
| | | * angemeldet ist |
| | | */ |
| | | public static String getUserName(HttpServletRequest req) { |
| | | String userName = null; |
| | |
| | | /** |
| | | * Diesen Filter initialisieren |
| | | * |
| | | * @param config die Konfiguration, die zur Initialisierung |
| | | * verwendet werden soll |
| | | * @param config die Konfiguration, die zur Initialisierung verwendet werden |
| | | * soll |
| | | */ |
| | | public void init(FilterConfig config) { |
| | | try { |
| | |
| | | if(p != null && p instanceof RechtePruefer) { |
| | | this.rechtePruefer = (RechtePruefer) p; |
| | | } else { |
| | | rechteDbSetzen(config); |
| | | //rechteDbSetzen(config); |
| | | this.rechtePruefer = new StandardRechtePruefer(); |
| | | } |
| | | } else { |
| | | rechteDbSetzen(config); |
| | | //rechteDbSetzen(config); |
| | | this.rechtePruefer = new StandardRechtePruefer(); |
| | | } |
| | | } else { |
| | | rechteDbSetzen(config); |
| | | //rechteDbSetzen(config); |
| | | this.rechtePruefer = new StandardRechtePruefer(); |
| | | } |
| | | } catch(Exception e) {} |
| | | } catch (Exception e) { |
| | | } |
| | | } |
| | | |
| | | private void rechteDbSetzen(FilterConfig config) { |
| | | /*private void rechteDbSetzen(FilterConfig config) { |
| | | this.rechtePruefer = new RechteDb(config.getInitParameter("dataSource")); |
| | | } |
| | | |
| | | }*/ |
| | | /** |
| | | * Diesen Filter vernichten (vom Filter verwendete Ressourcen |
| | | * frei geben usw.) |
| | | * Diesen Filter vernichten (vom Filter verwendete Ressourcen frei geben usw.) |
| | | */ |
| | | public void destroy() { |
| | | this.rechtePruefer = null; |