On Mar 6, 2012, at 11:10 PM, Marcin S wrote:

> 2012/3/6 Craig White <[email protected]>:
>> 
>> On Mar 6, 2012, at 12:54 PM, Marcin S wrote:
>> 
>>> Hello everyone,
>>> 
>>> I need to create a rails app where authentication and permissions for
>>> certain application actions will be provided by LDAP server. There is
>>> a problem with LDAP connection management, as every user login will
>>> spawn new connection object instance it may dangerously increase
>>> application memory usage (tbh i dont know what will happen, nothing
>>> good for sure) - LDAP server can close connection remotly after some
>>> idle time, but some connection resources will remain in memory non the
>>> less.
>>> I've made some google research what may be best course of action to
>>> manage this issue and i think creating connection pool sounds good.
>>> I've commited few average sized rails projects but nothing i've
>>> experienced so far is giving me any clues how to implement this
>>> solution.
>>> 
>>> I'll be happy to hear how You would do it.
>> ----
>> No - only 1 connection to LDAP server using a special account for the 
>> purpose with sufficient privileges for the task.
>> 
>> It's easy enough to create 'local' users who authenticate via LDAP and then 
>> you can manage their privileges/permissions via Rights/Roles if you want.
>> 
>> simple ruby app using net-ldap
>> 
>> #!/usr/local/bin/ruby
>> #
>> require 'rubygems'
>> require 'net/ldap'
>> 
>> $person = "cwhite"
>> $passwd = "won't_work"
>> 
>> ldap = Net::LDAP.new :encryption => :simple_tls,
>>  :host => 'ldap.server',
>>  :port => 636, # use 389 for non-ssl
>>  :auth => {
>>    :method   => :simple,
>>    :username => "uid=" + $person + ", ou=people, dc=example, dc=com",
>>    :password => $passwd
>>  }
>> 
>> if ldap.bind
>>  p "LDAP authentication succeeded"
>> else
>>  p "LDAP authentication failed"
>> end
>> 
>> Should give you enough of a concept for implementing in Rails
>> 
>> Craig
>> 
> 
> Yeah i have login covered already, in simmilar way, but what with
> application permissions?
> I can read it at login time, save it somewhere and never user LDAP
> again until next login - but when i give that user a cookie, and then
> authenticate him with it any permissions changes on ldap wont have any
> effect (untile next login)
> How would You solve that?
----
as best as I understand your question, this is what I do.

I have an SQL User class which shares the 'name' with the uid of the LDAP user 
and the user_id and the user_name are inserted into session variables which tie 
it together.

Then I have all the controllers & methods of my application subject to 
Right/Roles permissions model so those can be changed at will since a 
'before_filter' requires that a particular user has permissions to access. Thus 
while LDAP does authentication (user/password), I use my own hand rolled 
authorization scheme to allow/deny access to any/all methods & controllers. I 
don't store any Rails permissions on LDAP whatsoever.

Craig

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to