1 package net.sourceforge.guacamole.net.basic;
4 * Guacamole - Clientless Remote Desktop
5 * Copyright (C) 2010 Michael Jumper
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Affero General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Affero General Public License for more details.
17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
21 import net.sourceforge.guacamole.net.auth.UserConfiguration;
22 import net.sourceforge.guacamole.net.auth.AuthenticationProvider;
23 import java.io.IOException;
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServlet;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28 import javax.servlet.http.HttpSession;
29 import net.sourceforge.guacamole.GuacamoleException;
30 import net.sourceforge.guacamole.net.auth.UsernamePassword;
31 import net.sourceforge.guacamole.properties.GuacamoleProperties;
32 import net.sourceforge.guacamole.net.basic.properties.BasicGuacamoleProperties;
33 import org.slf4j.Logger;
34 import org.slf4j.LoggerFactory;
36 public class BasicLogin extends HttpServlet {
38 private Logger logger = LoggerFactory.getLogger(BasicLogin.class);
40 private AuthenticationProvider authProvider;
43 public void init() throws ServletException {
45 // Get auth provider instance
47 authProvider = GuacamoleProperties.getProperty(BasicGuacamoleProperties.AUTH_PROVIDER);
49 catch (GuacamoleException e) {
50 logger.error("Error getting authentication provider from properties.", e);
51 throw new ServletException(e);
57 protected void service(HttpServletRequest request, HttpServletResponse response)
60 HttpSession httpSession = request.getSession(true);
62 // Retrieve username and password from parms
63 String username = request.getParameter("username");
64 String password = request.getParameter("password");
66 UsernamePassword credentials = new UsernamePassword();
67 credentials.setUsername(username);
68 credentials.setPassword(password);
70 // Get authorized configs
71 UserConfiguration config;
73 config = authProvider.getUserConfiguration(credentials);
75 catch (GuacamoleException e) {
76 logger.error("Error retrieving configuration for user {}.", username);
77 response.sendError(HttpServletResponse.SC_FORBIDDEN);
82 logger.warn("Failed login from {} for user \"{}\".", request.getRemoteAddr(), username);
83 response.sendError(HttpServletResponse.SC_FORBIDDEN);
87 logger.info("Successful login from {} for user \"{}\".", request.getRemoteAddr(), username);
89 // Associate configs with session
90 httpSession.setAttribute("GUAC_USER_CONFIG", config);