Session Tracking
Include tracking information about a client session in an LDAP operation. See Draft RFC.
Using the Session Tracking Control
When binding and the user is not yet known
BindOperation bind = new BindOperation(new DefaultConnectionFactory("ldap://directory.ldaptive.org"));
BindRequest request = SimpleBindRequest.builder()
.dn("uid=dfisher,ou=people,dc=ldaptive,dc=org")
.password("password")
.controls(new SessionTrackingControl(
"151.101.32.133", // client IP address
"hostname.domain.com", // client host name, empty string if unknown
SessionTrackingControl.USERNAME_ACCT_OID, // must assign an OID even if using an empty identifier
"")) // empty tracking identifier
.build();
bind.execute(request);
When searching and the user is known
SearchOperation search = new SearchOperation(new DefaultConnectionFactory("ldap://directory.ldaptive.org"));
SearchRequest request = SearchRequest.builder()
.dn("dc=ldaptive,dc=org")
.filter("(givenName=daniel)")
.controls(new SessionTrackingControl(
"151.101.32.133", // client IP address
"hostname.domain.com", // client host name, empty string if unknown
SessionTrackingControl.USERNAME_ACCT_OID,
"dn:uid=dfisher,ou=people,dc=ldaptive,dc=org"))
.build();
SearchResponse response = search.execute(request);
for (LdapEntry entry : response.getEntries()) {
// do something useful with the entries
}