View Javadoc

    1   /* Copyright 2004, 2005 Acegi Technology Pty Limited
    2    *
    3    * Licensed under the Apache License, Version 2.0 (the "License");
    4    * you may not use this file except in compliance with the License.
    5    * You may obtain a copy of the License at
    6    *
    7    *     http://www.apache.org/licenses/LICENSE-2.0
    8    *
    9    * Unless required by applicable law or agreed to in writing, software
    10   * distributed under the License is distributed on an "AS IS" BASIS,
    11   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12   * See the License for the specific language governing permissions and
    13   * limitations under the License.
    14   */
    15
    16  package org.acegisecurity.providers.cas.proxy;
    17
    18  import java.util.List;
    19
    20  import org.acegisecurity.AcegiMessageSource;
    21  import org.acegisecurity.providers.cas.CasProxyDecider;
    22  import org.acegisecurity.providers.cas.ProxyUntrustedException;
    23  import org.apache.commons.logging.Log;
    24  import org.apache.commons.logging.LogFactory;
    25  import org.springframework.beans.factory.InitializingBean;
    26  import org.springframework.context.MessageSource;
    27  import org.springframework.context.MessageSourceAware;
    28  import org.springframework.context.support.MessageSourceAccessor;
    29  import org.springframework.util.Assert;
    30
    31
    32  /***
    33   * Accepts no proxied requests.
    34   *
    35   * <P>
    36   * This class should be used if only service tickets wish to be accepted (ie no
    37   * proxy tickets at all).
    38   * </p>
    39   */
    40  public class RejectProxyTickets implements CasProxyDecider, MessageSourceAware,
    41      InitializingBean {
    42      //~ Static fields/initializers =============================================
    43
    44      private static final Log logger = LogFactory.getLog(RejectProxyTickets.class);
    45
    46      //~ Instance fields ========================================================
    47
    48      protected MessageSourceAccessor messages = AcegiMessageSource.getAccessor();
    49
    50      //~ Methods ================================================================
    51
    52      public void afterPropertiesSet() throws Exception {
    53          Assert.notNull(this.messages, "A message source must be set");
    54      }
    55
    56      public void confirmProxyListTrusted(List proxyList)
    57          throws ProxyUntrustedException {
    58          Assert.notNull(proxyList, "proxyList cannot be null");
    59
    60          if (proxyList.size() == 0) {
    61              // A Service Ticket (not a Proxy Ticket)
    62              return;
    63          }
    64
    65          if (logger.isDebugEnabled()) {
    66              logger.debug("Proxies are unacceptable; proxy list provided: "
    67                  + proxyList.toString());
    68          }
    69
    70          throw new ProxyUntrustedException(messages.getMessage(
    71                  "RejectProxyTickets.reject", "Proxy tickets are rejected"));
    72      }
    73
    74      public void setMessageSource(MessageSource messageSource) {
    75          this.messages = new MessageSourceAccessor(messageSource);
    76      }
    77  }