1package CyrusSasl; 2 3import java.util.Hashtable; 4import javax.security.auth.callback.*; 5 6public class Sasl 7{ 8 9 private static SaslClientFactory client_factory = null; 10 private static SaslServerFactory server_factory = null; 11 12 /* 13 Creates a SaslClient using the parameters supplied. It returns null 14 if no SaslClient can be created using the parameters supplied. Throws 15 SaslException if it cannot create a SaslClient because of an error. 16 17 The algorithm for selection is as follows: 18 19 1. If a factory has been installed via setSaslClientFactory(), try it 20 first. If non-null answer produced, return it. 21 2. Use the packages listed in the javax.security.sasl.client.pkgs 22 property from props to load in a factory and try to create a 23 SaslClient, by looking for a class named ClientFactory. Repeat 24 this for each package on the list until a non-null answer is 25 produced. If non-null answer produced, return it. 26 3. Repeat previous step using the javax.security.sasl.client.pkgs 27 System property. 28 4. If no non-null answer produced, return null. 29 30 Parameters are: 31 32 mechanisms The non-null list of mechanism names to try. Each 33 is the IANA-registered name of a SASL mechanism. 34 (e.g. "GSSAPI", "CRAM-MD5"). 35 36 37 38 authorizationID The possibly null protocol-dependent 39 identification to be used for authorization, e.g. 40 user name or distinguished name. When the SASL 41 authentication completes successfully, the entity 42 named by authorizationId is granted access. If 43 null, access is granted to a protocol-dependent 44 default (for example, in LDAP this is the DN in 45 the bind request). 46 47 protocol The non-null string name of the protocol for 48 which the authentication is being performed, e.g 49 "pop", "ldap". 50 51 serverName The non-null fully qualified host name of the 52 server to authenticate to. 53 54 props The possibly null additional configuration 55 properties for the session, e.g. 56 57 */ 58 59 public static SaslClient 60 createSaslClient(String[] mechanisms, 61 String authorizationID, 62 String protocol, 63 String serverName, 64 Hashtable props, 65 javax.security.auth.callback.CallbackHandler cbh) throws SaslException 66 { 67 if (client_factory == null) 68 { 69 client_factory = new ClientFactory(); 70 } 71 72 return client_factory.createSaslClient(mechanisms, 73 authorizationID, 74 protocol, 75 serverName, 76 props, 77 cbh); 78 } 79 80 public static void setSaslClientFactory(SaslClientFactory fac) { 81 client_factory = fac; 82 } 83 84 public static void setSaslServerFactory(SaslServerFactory fac) { 85 server_factory = fac; 86 } 87 88 89 public static SaslServer CreateSaslServer(String mechanism, 90 String protocol, 91 String serverName, 92 Hashtable props, 93 javax.security.auth.callback.CallbackHandler cbh) 94 throws SaslException 95 { 96 if (server_factory == null) 97 { 98 server_factory = new ServerFactory(); 99 } 100 101 return server_factory.createSaslServer(mechanism, 102 protocol, 103 serverName, 104 props, 105 cbh); 106 } 107 108 public static String[] getMechanismNames() 109 { 110 if (server_factory == null) 111 { 112 server_factory = new ServerFactory(); 113 } 114 115 return server_factory.getMechanismNames(); 116 } 117 118 119 120 121 122} 123