1 22 package org.jgroups.auth; 23 24 import org.jgroups.Message; 25 import org.jgroups.util.Util; 26 27 import java.util.Properties ; 28 import java.util.ArrayList ; 29 import java.util.List ; 30 import java.util.StringTokenizer ; 31 import java.io.DataOutputStream ; 32 import java.io.IOException ; 33 import java.io.DataInputStream ; 34 35 48 public class FixedMembershipToken extends AuthToken { 49 private static final String FIXED_MEMBERS_ATTR = "fixed_members_value"; 50 private static final String FIXED_MEMBERS_SEPERATOR_ATTR = "fixed_members_seperator"; 51 52 private List memberList = null; 53 private String token = "emptyToken"; 54 55 public FixedMembershipToken(){ 56 } 57 58 public String getName(){ 59 return "org.jgroups.auth.FixedMembershipToken"; 60 } 61 62 public boolean authenticate(AuthToken token, Message msg){ 63 if((token != null) && (token instanceof FixedMembershipToken) && (this.memberList != null)){ 64 FixedMembershipToken serverToken = (FixedMembershipToken) token; 66 67 String sourceAddressWithPort = msg.getSrc().toString(); 68 String sourceAddressWithoutPort = sourceAddressWithPort.substring(0, sourceAddressWithPort.indexOf(":")); 69 70 if(log.isDebugEnabled()){ 71 log.debug("AUTHToken received from " + sourceAddressWithPort); 72 } 73 74 if((this.memberList.contains(sourceAddressWithPort)) || (this.memberList.contains(sourceAddressWithoutPort))){ 75 if(log.isDebugEnabled()){ 77 log.debug("FixedMembershipToken match"); 78 } 79 return true; 80 }else{ 81 if(log.isWarnEnabled()){ 82 log.warn("Authentication failed on FixedMembershipToken"); 83 } 84 return false; 85 } 86 } 87 88 if(log.isWarnEnabled()){ 89 log.warn("Invalid AuthToken instance - wrong type or null"); 90 } 91 return false; 92 } 93 94 public void setValue(Properties properties){ 95 memberList = new ArrayList (); 96 StringTokenizer memberListTokenizer = new StringTokenizer ((String )properties.get(FixedMembershipToken.FIXED_MEMBERS_ATTR), 97 (String )properties.get(FixedMembershipToken.FIXED_MEMBERS_SEPERATOR_ATTR)); 98 while(memberListTokenizer.hasMoreTokens()){ 99 memberList.add(memberListTokenizer.nextToken().replace('/', ':')); 100 } 101 properties.remove(FixedMembershipToken.FIXED_MEMBERS_ATTR); 102 properties.remove(FixedMembershipToken.FIXED_MEMBERS_SEPERATOR_ATTR); 103 } 104 109 public void writeTo(DataOutputStream out) throws IOException { 110 if(log.isDebugEnabled()){ 111 log.debug("SimpleToken writeTo()"); 112 } 113 Util.writeString(this.token, out); 114 } 115 122 public void readFrom(DataInputStream in) throws IOException , IllegalAccessException , InstantiationException { 123 if(log.isDebugEnabled()){ 124 log.debug("SimpleToken readFrom()"); 125 } 126 this.token = Util.readString(in); 127 } 128 } 129 | Popular Tags |