001    /*
002     * Copyright (C) 2011 eXo Platform SAS.
003     *
004     * This is free software; you can redistribute it and/or modify it
005     * under the terms of the GNU Lesser General Public License as
006     *
007     * published by the Free Software Foundation; either version 2.1 of
008     * the License, or (at your option) any later version.
009     *
010     * This software is distributed in the hope that it will be useful,
011     * but WITHOUT ANY WARRANTY; without even the implied warranty of
012     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013     * Lesser General Public License for more details.
014     *
015     * You should have received a copy of the GNU Lesser General Public
016     * License along with this software; if not, write to the Free
017     * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
018     * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
019     */
020    
021    package org.crsh.auth;
022    
023    /**
024     * An interface a plugin should implement if it wants to add custom authentication for ssh.
025     *
026     * @author <a href="mailto:nscavell@redhat.com">Nick Scavelli</a>
027     * @version $Revision$
028     */
029    public interface AuthenticationPlugin {
030    
031      /**
032       * Returns the authentication plugin name.
033       *
034       * @return the plugin name
035       */
036      String getName();
037    
038      /**
039       * Returns true if the user is authentified by its username and password.
040       *
041       * @param username the username
042       * @param password the password
043       * @return true if authentication succeeded
044       * @throws Exception any exception that would prevent authentication to happen
045       */
046      boolean authenticate(String username, String password) throws Exception;
047    }