/* * Copyright 2000-2001,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.jetspeed.services.security.nosecurity; import org.apache.turbine.services.TurbineBaseService; import org.apache.turbine.services.TurbineServices; import org.apache.turbine.services.InitializationException; import org.apache.jetspeed.services.security.PortalAuthentication; import org.apache.jetspeed.services.security.LoginException; import org.apache.jetspeed.services.JetspeedSecurity; import org.apache.jetspeed.om.security.JetspeedUser; import org.apache.jetspeed.services.security.FailedLoginException; import org.apache.jetspeed.services.rundata.JetspeedRunDataService; import org.apache.jetspeed.services.rundata.JetspeedRunData; import org.apache.jetspeed.services.security.nosecurity.FakeJetspeedUser; import org.apache.turbine.services.rundata.RunDataService; /** * <p> The <code>NoAuthentication</code> class is a Jetspeed * security provider, implementing the <code>PortalAuthentication</code> interface. * It provides no authentication - all login attempts are allowed. * * @author <a href="mailto:ggolden@apache.org">Glenn R. Golden</a> * @version $Id: NoAuthentication.java,v 1.3 2004/02/23 03:53:24 jford Exp $ */ public class NoAuthentication extends TurbineBaseService implements PortalAuthentication { /** The JetspeedRunData Service. */ private JetspeedRunDataService m_runDataService = null; /** * Given a public credential(username) and private credential(password), * perform authentication. If authentication succeeds, a <code>JetspeedUser</code> * is returned representing the authenticated subject. * * @param username a public credential of the subject to be authenticated. * @param password a private credentialof the subject to be authenticated. * @return a <code>JetspeedUser</code> object representing the authenticated subject. * @exception LoginException when general security provider failure. * @exception FailedLoginException when the authentication failed. * @exception AccountExpiredException when the subject's account is expired. * @exception CredentialExpiredException when the subject's credential is expired. */ public JetspeedUser login(String username, String password) throws LoginException { // we let anyone in! if (false) throw new FailedLoginException("Invalid user id or password"); // create a user object with this username for Jetspeed use FakeJetspeedUser user = new FakeJetspeedUser(username, true); // make it the logged in user for Jetspeed putUserIntoContext(user); return user; } // login /** * Automatically authenticates and retrieves the portal anonymous user. * * @return a <code>JetspeedUser</code> object representing the authenticated subject. * @exception LoginException if the authentication fails. */ public JetspeedUser getAnonymousUser() throws LoginException { // create a user object with this username for Jetspeed use FakeJetspeedUser user = new FakeJetspeedUser(JetspeedSecurity.getAnonymousUserName(), false); // make it the logged in user for Jetspeed putUserIntoContext(user); return user; } // getAnonymousUser /** * Logout the <code>JetspeedUser</code>. * * The logout procedure my may include removing/destroying * <code>Principal</code> and <code>Credential</code> information * if relevant to the security provider. * * @exception LoginException if the logout fails. */ public void logout() throws LoginException { // revert to the anon. user as the current user getAnonymousUser(); } // logout /** * Performs late initialization. Called just before the first use of the service. * * If your class relies on early initialization, and the object it * expects was not received, you can use late initialization to * throw an exception and complain. * * @exception InitializationException, if initialization of this class was not successful. */ public synchronized void init() throws InitializationException { super.init(); m_runDataService = (JetspeedRunDataService)TurbineServices.getInstance() .getService(RunDataService.SERVICE_NAME); } // init //////////////////////////////////////////////////////////////////////////// protected JetspeedRunData getRunData() { JetspeedRunData rundata = null; if (m_runDataService != null) { rundata = m_runDataService.getCurrentRunData(); } return rundata; } protected JetspeedUser getUserFromContext() { JetspeedRunData rundata = getRunData(); JetspeedUser user = null; if (rundata != null) { user = (JetspeedUser)rundata.getUser(); } return user; } protected JetspeedRunData putUserIntoContext(JetspeedUser user) { JetspeedRunData rundata = getRunData(); if (rundata != null) { rundata.setUser(user); rundata.save(); } return rundata; } }