View Javadoc

    1   /*
    2    * Licensed to the University Corporation for Advanced Internet Development,
    3    * Inc. (UCAID) under one or more contributor license agreements.  See the
    4    * NOTICE file distributed with this work for additional information regarding
    5    * copyright ownership. The UCAID licenses this file to You under the Apache
    6    * License, Version 2.0 (the "License"); you may not use this file except in
    7    * compliance with the License.  You may obtain a copy of the License at
    8    *
    9    *    http://www.apache.org/licenses/LICENSE-2.0
    10   *
    11   * Unless required by applicable law or agreed to in writing, software
    12   * distributed under the License is distributed on an "AS IS" BASIS,
    13   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14   * See the License for the specific language governing permissions and
    15   * limitations under the License.
    16   */
    17
    18  package edu.internet2.middleware.shibboleth.idp.authn.provider;
    19
    20  import java.io.IOException;
    21
    22  import javax.servlet.ServletException;
    23  import javax.servlet.http.HttpServlet;
    24  import javax.servlet.http.HttpServletRequest;
    25  import javax.servlet.http.HttpServletResponse;
    26
    27  import org.opensaml.xml.util.DatatypeHelper;
    28  import org.slf4j.Logger;
    29  import org.slf4j.LoggerFactory;
    30
    31  import edu.internet2.middleware.shibboleth.idp.authn.AuthenticationEngine;
    32  import edu.internet2.middleware.shibboleth.idp.authn.LoginHandler;
    33  import edu.internet2.middleware.shibboleth.idp.authn.UsernamePrincipal;
    34
    35  /** Extracts the REMOTE_USER and places it in a request attribute to be used by the authentication engine. */
    36  public class RemoteUserAuthServlet extends HttpServlet {
    37
    38      /** Serial version UID. */
    39      private static final long serialVersionUID = -6153665874235557534L;
    40
    41      /** Class logger. */
    42      private final Logger log = LoggerFactory.getLogger(RemoteUserAuthServlet.class);
    43
    44      /** {@inheritDoc} */
    45      protected void service(HttpServletRequest httpRequest, HttpServletResponse httpResponse) throws ServletException,
    46              IOException {
    47          String principalName = DatatypeHelper.safeTrimOrNullString(httpRequest.getRemoteUser());
    48          if(principalName != null){
    49              log.debug("Remote user identified as {} returning control back to authentication engine", principalName);
    50              httpRequest.setAttribute(LoginHandler.PRINCIPAL_KEY, new UsernamePrincipal(principalName));
    51          }else{
    52              log.debug("No remote user information was present in the request");
    53          }
    54
    55          AuthenticationEngine.returnToAuthenticationEngine(httpRequest, httpResponse);
    56      }
    57  }