Frage

Update 30.11.11 Ich habe einige Änderungen im Code -Snippet vorgenommen, bei denen ich Fehler gefunden habe. Ich authentifiziere mich jetzt mit Sicherheit erfolgreich, erhalte aber diesen Fehler, nachdem ich den Aufruf von LDAP.Search versucht habe:

<OpenStruct code = 1, message="Operations Error">

Verwenden Sie Rails 3.1.0 und Ruby 1.9.2 unter Windows Server 2008 R2

originale NachrichtIch bin brandneu in Ruby, Rails und Programmierung. Ich habe eine Anwendung, die sich mit unserem Active Directory -Server authentifizieren muss und gleichzeitig eine Liste von Benutzern beibehält, die von der Anzeige getrennt sind.

Ich versuche, Net-LDAP zu verwenden, um die Verbindung herzustellen, die Anzeige zu suchen und die Benutzer zu laden, aber ich erhalte 0 Ergebnisse bei jedem Ausführen.

Ich habe dies basierend auf Beispielen zusammengestellt, die ich gesehen habe, aber wenn ich es an mein Unternehmen anpassung anpege, scheint es nicht zu funktionieren. Alle Ideen/Kritikpunkte sind herzlich willkommen.

Danke!

Ich habe dies als Methode in meinem Benutzerklassenmodell festgelegt:

class User < ActiveRecord::Base
  attr_accessible :username, :name, :email, :team, :office, :points_attributes
  validates_presence_of :username, :name, :email
  validates_uniqueness_of :username, :email
  has_one :points
  accepts_nested_attributes_for :points

  def self.import_all
  # initialization stuff. set bind_dn, bind_pass, ldap_host, base_dn and filter

  ldap = Net::LDAP.new(:host => "dc.mycompany.com", :port => 389)
  if ldap.bind(:method => :simple, :username => "username@mycompany.com", :password => "secret")
  else
    p ldap.get_operation_result
  end

  begin
  # Build the list
  filter = Net::LDAP::Filter.eq("displayName", "J*")
  attrs = ["givenName", "sn", "physicalDeliveryOfficeName", "sAMAccountName"]
  records = new_records = 0
  ldap.search(:base => "DC=mycompany,DC=com", :attributes => attrs, :filter =>  filter,  :return_result => false) do |entry|
    name = entry.givenName.to_s.strip + " " + entry.sn.to_s.strip
    username = entry.sAMAccountName.to_s.strip
    email = entry.sAMAccountName.to_s.strip + "@mycompany.com"
    office = entry.physicalDeliveryOfficeName.to_s.strip
    user = User.find_or_initialize_by_username :name => name, :username => username, :email => email, :office => office
    if user.new_record?
      user.save
      Points.find_or_create_by_user_id(user.id)
      new_records = new_records + 1
    else
      user.touch
    end
    records = records + 1
  end
  p ldap.get_operation_result

    logger.info( "LDAP Import Complete: " + Time.now.to_s )
    logger.info( "Total Records Processed: " + records.to_s )
    logger.info( "New Records: " + new_records.to_s )

    end

  end
end
War es hilfreich?

Lösung

Es stellt sich heraus, dass der Fehler, den ich bekomme, auf einige der Attribute zurückzuführen ist, nach denen ich suche, nach dem ich nicht auf allen Benutzern unter dem Baum vorhanden bin, den ich mir anschaue.

Vielen Dank an alle, die sich das angesehen haben, aber ich glaube, ich kann weitermachen, wie man mit Einträgen ohne diese Attribute umgeht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top