@@ -306,6 +306,7 @@ class Net::LDAP
306306 3 => :string , # SearchFilter-extensible
307307 4 => :string , # SearchFilter-extensible
308308 7 => :string , # serverSaslCreds
309+ 11 => :string , # responseValue
309310 }
310311 constructed = {
311312 0 => :array , # RFC-2251 Control and Filter-AND
@@ -341,6 +342,7 @@ class Net::LDAP
341342
342343 StartTlsOid = '1.3.6.1.4.1.1466.20037'
343344 PasswdModifyOid = '1.3.6.1.4.1.4203.1.11.1'
345+ WhoamiOid = '1.3.6.1.4.1.4203.1.11.3'
344346
345347 # https://tools.ietf.org/html/rfc4511#section-4.1.9
346348 # https://tools.ietf.org/html/rfc4511#appendix-A
@@ -1200,6 +1202,23 @@ def delete_tree(args)
12001202 end
12011203 end
12021204
1205+ # Return the authorization identity of the client that issues the
1206+ # ldapwhoami request. The method does not support any arguments.
1207+ #
1208+ # Returns True or False to indicate whether the request was successfull.
1209+ # The result is available in the extended status information when calling
1210+ # #get_operation_result.
1211+ #
1212+ # ldap.ldapwhoami
1213+ # puts ldap.get_operation_result.extended_response
1214+ def ldapwhoami ( args = { } )
1215+ instrument "ldapwhoami.net_ldap" , args do |payload |
1216+ @result = use_connection ( args , &:ldapwhoami )
1217+ @result . success?
1218+ end
1219+ end
1220+ alias_method :whoami , :ldapwhoami
1221+
12031222 # This method is experimental and subject to change. Return the rootDSE
12041223 # record from the LDAP server as a Net::LDAP::Entry, or an empty Entry if
12051224 # the server doesn't return the record.
0 commit comments