Skip to content

Commit

Permalink
doc improvements
Browse files Browse the repository at this point in the history
  • Loading branch information
blackhedd committed Jul 12, 2006
1 parent 3108412 commit 43dcdec
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 12 deletions.
3 changes: 3 additions & 0 deletions README
Expand Up @@ -16,6 +16,9 @@ itself.
== Requirements
Net::LDAP requires Ruby 1.8.2 or better.

== Documentation
See Net::LDAP for documentation and usage samples.

#--
# Net::LDAP for Ruby.
# http://rubyforge.org/projects/net-ldap/
Expand Down
97 changes: 85 additions & 12 deletions lib/net/ldap.rb
Expand Up @@ -41,7 +41,25 @@ module Net
# the LDAP protocol itself, and thus presenting as Ruby-like
# a programming interface as possible.
#
# === Quick-start for the Impatient
# == Quick-start for the Impatient
# === Quick Example of a user-authentication against an LDAP directory:
#
# require 'rubygems'
# require 'net/ldap'
#
# ldap = Net::LDAP.new
# ldap.host = your_server_ip_address
# ldap.port = 389
# ldap.auth "joe_user", "opensesame"
# if ldap.bind
# # authentication succeeded
# else
# # authentication failed
# end
#
#
# === Quick Example of a search against an LDAP directory:
#
# require 'rubygems'
# require 'net/ldap'
#
Expand Down Expand Up @@ -69,14 +87,14 @@ module Net
# p ldap.get_operation_result
#
#
# == Quick introduction to LDAP
# == A Brief Introduction to LDAP
#
# We're going to provide a quick and highly informal introduction to LDAP
# We're going to provide a quick, informal introduction to LDAP
# terminology and
# typical operations. If you're comfortable with this material, skip
# ahead to "How to use Net::LDAP." If you want a more rigorous treatment
# of this material, we recommend you start with the various IETF and ITU
# standards that control LDAP.
# standards that relate to LDAP.
#
# === Entities
# LDAP is an Internet-standard protocol used to access directory servers.
Expand Down Expand Up @@ -360,17 +378,38 @@ def initialize args = {}
@open_connection = nil
end

# Convenient method to specify your authentication to the LDAP
# Convenience method to specify authentication credentials to the LDAP
# server. Currently supports simple authentication requiring
# a username and password. Observe that on most LDAP servers,
# including A/D, the username is a complete DN.
# The password argument may be a Proc that returns a string.
# a username and password.
#
# Observe that on most LDAP servers,
# the username is a complete DN. However, with A/D, it's often possible
# to give only a user-name rather than a complete DN. In the latter
# case, beware that many A/D servers are configured to permit anonymous
# (uncredentialled) binding, and will silently accept your binding
# as anonymous if you give an unrecognized username. This is not usually
# what you want. (See #get_operation_result.)
#
# <b>Important:</b> The password argument may be a Proc that returns a string.
# This makes it possible for you to write client programs that solicit
# passwords from users or from other data sources without showing them
# in your code or on command lines.
#
# require 'net/ldap'
#
# ldap = Net::LDAP.new
# ldap.host = server_ip_address
# ldap.authenticate "cn=Your Username,cn=Users,dc=example,dc=com", "your_psw"
#
# Alternatively (with a password block):
#
# require 'net/ldap'
#
# ldap = Net::LDAP.new
# ldap.host = server_ip_address
# psw = proc { your_psw_function }
# ldap.authenticate "cn=Your Username,cn=Users,dc=example,dc=com", psw
#
def authenticate username, password
password = password.call if password.respond_to?(:call)
@auth = {:method => :simple, :username => username, :password => password}
Expand Down Expand Up @@ -553,12 +592,46 @@ def search args = {}
@result == 0 and result_set
end

# #bind connects to the LDAP server and requests authentication
# #bind connects to an LDAP server and requests authentication
# based on the <tt>:auth</tt> parameter passed to #open or #new.
# It takes no parameters.
# User code generally will not call #bind. It will be called
# implicitly by the library whenever an LDAP operation is
# requested. #bind can be useful to test authentication.
#
# User code does not need to call #bind directly. It will be called
# implicitly by the library whenever you invoke an LDAP operation,
# such as #search or #add.
#
# It is useful, however, to call #bind in your own code when the
# only operation you intend to perform against the directory is
# to validate a login credential. #bind returns true or false
# to indicate whether the binding was successful. Reasons for
# failure include malformed or unrecognized usernames and
# incorrect passwords. Use #get_operation_result to find out
# what happened in case of failure.
#
# Here's a typical example using #bind to authenticate a
# credential which was (perhaps) solicited from the user of a
# web site:
#
# require 'net/ldap'
# ldap = Net::LDAP.new
# ldap.host = your_server_ip_address
# ldap.port = 389
# ldap.auth your_user_name, your_user_password
# if ldap.bind
# # authentication succeeded
# else
# # authentication failed
# p ldap.get_operation_result
# end
#
# You don't have to create a new instance of Net::LDAP every time
# you perform a binding in this way. If you prefer, you can cache the Net::LDAP object
# and re-use it to perform subsequent bindings, <i>provided</i> you call
# #auth to specify a new credential before calling #bind. Otherwise, you'll
# just re-authenticate the previous user! (You don't need to re-set
# the values of #host and #port.) As noted in the documentation for #auth,
# the password parameter can be a Ruby Proc instead of a String.
#
#--
# If there is an @open_connection, then perform the bind
# on it. Otherwise, connect, bind, and disconnect.
Expand Down

0 comments on commit 43dcdec

Please sign in to comment.