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  package org.acegisecurity.ui;
16  
17  import java.io.Serializable;
18  
19  import javax.servlet.http.HttpServletRequest;
20  import javax.servlet.http.HttpSession;
21  
22  
23  /***
24   * A holder of selected HTTP details related to a web authentication request.
25   *
26   * @author Ben Alex
27   * @version $Id: WebAuthenticationDetails.java,v 1.4 2005/11/17 00:56:10 benalex Exp $
28   */
29  public class WebAuthenticationDetails implements Serializable {
30      private String remoteAddress;
31      private String sessionId;
32  
33      /***
34       * Constructor.
35       *
36       * <p>
37       * NB: This constructor will cause a <code>HttpSession</code> to be created
38       * (this is considered reasonable as all Acegi Security authentication
39       * requests rely on <code>HttpSession</code> to store the
40       * <code>Authentication</code> between requests
41       * </p>
42       *
43       * @param request that the authentication request was received from
44       */
45      public WebAuthenticationDetails(HttpServletRequest request) {
46          this.remoteAddress = request.getRemoteAddr();
47          this.sessionId = request.getSession(true).getId();
48          doPopulateAdditionalInformation(request);
49      }
50  
51      public WebAuthenticationDetails(HttpServletRequest request,
52          boolean forceSessionCreation) {
53          this.remoteAddress = request.getRemoteAddr();
54          HttpSession session = request.getSession(forceSessionCreation);
55          this.sessionId = session != null ? session.getId() : null;
56  
57          doPopulateAdditionalInformation(request);
58      }
59  
60      protected WebAuthenticationDetails() {
61          throw new IllegalArgumentException("Cannot use default constructor");
62      }
63  
64      /***
65       * Indicates the TCP/IP address the authentication request was received
66       * from.
67       *
68       * @return the address
69       */
70      public String getRemoteAddress() {
71          return remoteAddress;
72      }
73  
74      /***
75       * Indicates the <code>HttpSession</code> id the authentication request was
76       * received from.
77       *
78       * @return the session ID
79       */
80      public String getSessionId() {
81          return sessionId;
82      }
83  
84      public String toString() {
85          StringBuffer sb = new StringBuffer();
86          sb.append(super.toString() + ": ");
87          sb.append("RemoteIpAddress: " + this.getRemoteAddress() + "; ");
88          sb.append("SessionId: " + this.getSessionId());
89  
90          return sb.toString();
91      }
92  
93      /***
94       * Provided so that subclasses can populate additional information.
95       *
96       * @param request that the authentication request was received from
97       */
98      protected void doPopulateAdditionalInformation(HttpServletRequest request) {
99      }
100 }