Domanda

Aggiornamento 11/30/11 Ho fatto alcuni cambiamenti nel frammento di codice dove ho trovato errori. Ora sto autenticato con successo di sicuro, ma sto ottenendo questo errore dopo aver tentato la chiamata ldap.search:

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

Utilizzo di Rails 3.1.0 e 1.9.2 rubino su Windows Server 2008 R2

Original Message Sono nuovo a Ruby, le rotaie e la programmazione di marca. Ho un'applicazione che dovrà autenticarsi al nostro server Active Directory, pur mantenendo una lista di utenti separati da AD.

Sto tentando di usare net-LDAP per stabilire la connessione, cercare dC e caricare gli utenti, ma ottengo 0 risultati ad ogni tentativo di eseguire.

Ho messo questo insieme sulla base di campioni che ho visto, ma quando ho personalizzarlo per la mia azienda, non sembra al lavoro. Tutte le idee / critiche sono i benvenuti.

grazie!

Ho impostato questo come un metodo nel mio modello di classe per l'utente:

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
È stato utile?

Soluzione

Si scopre che l'errore che sto ottenendo è causa di alcuni degli attributi che sto cercando non esistente in tutti gli utenti sotto l'albero sto guardando.

Grazie a tutti quelli che hanno guardato questo, ma credo di poter andare avanti per risolvere come gestire le voci, senza quegli attributi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top