001: /*
002: * Licensed to the Apache Software Foundation (ASF) under one or more
003: * contributor license agreements. See the NOTICE file distributed with
004: * this work for additional information regarding copyright ownership.
005: * The ASF licenses this file to You under the Apache License, Version 2.0
006: * (the "License"); you may not use this file except in compliance with
007: * the License. You may obtain a copy of the License at
008: *
009: * http://www.apache.org/licenses/LICENSE-2.0
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017:
018: package org.apache.catalina.ha.authenticator;
019:
020: import java.io.Serializable;
021:
022: import org.apache.catalina.ha.ClusterMessage;
023: import org.apache.catalina.tribes.Member;
024:
025: /**
026: * Contains the SingleSignOn data, read and written by the ClusterSingleSignOn
027: * @author Fabien Carrion
028: */
029:
030: public class SingleSignOnMessage implements ClusterMessage,
031: Serializable {
032:
033: public static final int ADD_SESSION = 1;
034: public static final int DEREGISTER_SESSION = 2;
035: public static final int LOGOUT_SESSION = 3;
036: public static final int REGISTER_SESSION = 4;
037: public static final int UPDATE_SESSION = 5;
038: public static final int REMOVE_SESSION = 6;
039:
040: private int action = -1;
041: private String ssoId = null;
042: private String ctxname = null;
043: private String sessionId = null;
044: private String authType = null;
045: private String password = null;
046: private String username = null;
047:
048: private Member address = null;
049: private long timestamp = 0;
050: private String uniqueId = null;
051:
052: public SingleSignOnMessage(Member source, String ssoId,
053: String sessionId) {
054: this .address = source;
055: this .ssoId = ssoId;
056: this .sessionId = sessionId;
057: }
058:
059: /**
060: * Get the address that this message originated from. This would be set
061: * if the message was being relayed from a host other than the one
062: * that originally sent it.
063: */
064: public Member getAddress() {
065: return address;
066: }
067:
068: /**
069: * Called by the cluster before sending it to the other
070: * nodes.
071: *
072: * @param member Member
073: */
074: public void setAddress(Member member) {
075: this .address = member;
076: }
077:
078: /**
079: * Timestamp message.
080: *
081: * @return long
082: */
083: public long getTimestamp() {
084: return timestamp;
085: }
086:
087: /**
088: * Called by the cluster before sending out
089: * the message.
090: *
091: * @param timestamp The timestamp
092: */
093: public void setTimestamp(long timestamp) {
094: this .timestamp = timestamp;
095: }
096:
097: /**
098: * Each message must have a unique ID, in case of using async replication,
099: * and a smart queue, this id is used to replace messages not yet sent.
100: *
101: * @return String
102: */
103: public String getUniqueId() {
104: if (this .uniqueId != null)
105: return this .uniqueId;
106: StringBuffer result = new StringBuffer(getSsoId());
107: result.append("#-#");
108: result.append(System.currentTimeMillis());
109: return result.toString();
110: }
111:
112: public void setUniqueId(String uniqueId) {
113: this .uniqueId = uniqueId;
114: }
115:
116: public int getAction() {
117: return action;
118: }
119:
120: public void setAction(int action) {
121: this .action = action;
122: }
123:
124: public String getSsoId() {
125: return ssoId;
126: }
127:
128: public void setSsoId(String ssoId) {
129: this .ssoId = ssoId;
130: }
131:
132: public String getContextName() {
133: return ctxname;
134: }
135:
136: public void setContextName(String ctxname) {
137: this .ctxname = ctxname;
138: }
139:
140: public String getSessionId() {
141: return sessionId;
142: }
143:
144: public void setSessionId(String sessionId) {
145: this .sessionId = sessionId;
146: }
147:
148: public String getAuthType() {
149: return authType;
150: }
151:
152: public void setAuthType(String authType) {
153: this .authType = authType;
154: }
155:
156: public String getPassword() {
157: return password;
158: }
159:
160: public void setPassword(String password) {
161: this .password = password;
162: }
163:
164: public String getUsername() {
165: return username;
166: }
167:
168: public void setUsername(String username) {
169: this .username = username;
170: }
171:
172: // --------------------------------------------------------- Public Methods
173:
174: /**
175: * Return a String rendering of this object.
176: */
177: public String toString() {
178:
179: StringBuffer sb = new StringBuffer(
180: "SingleSignOnMessage[action=");
181: sb.append(getAction()).append(", ssoId=").append(getSsoId());
182: sb.append(", sessionId=").append(getSessionId()).append(
183: ", username=");
184: sb.append(getUsername()).append("]");
185: return (sb.toString());
186:
187: }
188:
189: }
|