1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.directory.server.ldap.handlers.sasl.external.certificate;
21
22 import org.apache.directory.api.ldap.model.message.BindRequest;
23 import org.apache.directory.server.core.api.CoreSession;
24 import org.apache.directory.server.ldap.LdapSession;
25 import org.apache.directory.server.ldap.handlers.sasl.AbstractMechanismHandler;
26 import org.apache.directory.server.ldap.handlers.sasl.SaslConstants;
27
28 import javax.security.sasl.SaslServer;
29
30
31
32
33
34
35 public class CertificateMechanismHandler extends AbstractMechanismHandler
36 {
37 public SaslServer handleMechanism( LdapSession ldapSession, BindRequest bindRequest ) throws Exception
38 {
39 SaslServer ss = ( SaslServer ) ldapSession.getSaslProperty( SaslConstants.SASL_SERVER );
40
41 if ( ss == null )
42 {
43 String saslHost = ldapSession.getLdapServer().getSaslHost();
44 String userBaseDn = ldapSession.getLdapServer().getSearchBaseDn();
45 ldapSession.putSaslProperty( SaslConstants.SASL_HOST, saslHost );
46 ldapSession.putSaslProperty( SaslConstants.SASL_USER_BASE_DN, userBaseDn );
47
48 CoreSession adminSession = ldapSession.getLdapServer().getDirectoryService().getAdminSession();
49
50 ss = new ExternalSaslServer( ldapSession, adminSession, bindRequest );
51
52 ldapSession.putSaslProperty( SaslConstants.SASL_SERVER, ss );
53 }
54
55 return ss;
56 }
57
58
59
60
61
62 public void init( LdapSession ldapSession )
63 {
64
65 String saslHost = ldapSession.getLdapServer().getSaslHost();
66 ldapSession.putSaslProperty( SaslConstants.SASL_HOST, saslHost );
67 }
68
69
70
71
72
73
74
75 public void cleanup( LdapSession ldapSession )
76 {
77 ldapSession.clearSaslProperties();
78 }
79 }