Skip to content

Latest commit

 

History

History
77 lines (66 loc) · 1.92 KB

README.md

File metadata and controls

77 lines (66 loc) · 1.92 KB

IU LDAP Groups Lookup

Gem Version

Usage

Adds an LDAPGroupsLookup that can be included in a a class to provide an #ldap_groups instance method:

class User
  attr_accessor :ldap_lookup_key
  include LDAPGroupsLookup::Behavior
end

u = User.new
u.ldap_lookup_key = 'some_username'
u.ldap_groups
u.member_of_ldap_group?(['Some-Group'])

The LDAP search will be run by the value of #ldap_lookup_key, so your instance object must provide that through some means:

class User < ActiveRecord::Base
  validates :username, presence: true, uniqueness: true
  alias_attribute :ldap_lookup_key, :username
  include LDAPGroupsLookup::Behavior
end

u = User.find_by(username: 'some_username')
u.ldap_groups
u.member_of_ldap_group?(['Some-Group'])

Configuration

Initializer

Create an initializer config/initializers/ldap_groups_lookup.rb that looks like:

LDAPGroupsLookup.config = {
  enabled: true,
  config: { host: 'ads.example.net',
            port: 636,
            encryption: {
              method: :simple_tls,
              tls_options: OpenSSL::SSL::SSLContext::DEFAULT_PARAMS,
            },
            auth: {
              method: :simple,
              username: "cn=example",
              password: 'changeme',
            }
  },
  tree: 'dc=ads,dc=example,dc=net',
  account_ou: 'ou=Accounts',
  group_ou: 'ou=Groups',
  member_allowlist: ['OU=Groups']
}

YAML

Alternatively, create a file config/ldap_groups_lookup.yml that looks like:

:enabled: true
:host: ads.example.net
:port: 389
:auth:
  :method: :simple
  :username: example
  :password: changeme
:tree: dc=ads,dc=example,dc=net
:account_ou: ou=Accounts
:group_ou: ou=Groups
:member_allowlist:
  - OU=Groups

Note: The yaml style does not allow for easy configuration of some properties like tls_options or other auth methods.