2013-06-19 24 views
3

我是否應該使用ldap.yml文件來確保使用ldap進行身份驗證,並將正確的組分配給它們以允許它們進入?在rails中檢查組成員資格設計ldap gem,它在yaml中嗎?

我不是一個AD贊成任何手段,這使我感到困惑......什麼是一個組和屬性。從我的理解。我們在AD有一個用戶,他們有一個samAccount的名字,我可以讓他們進入應用程序,但它並不在乎他們的團隊是什麼。它是一個專門的應用程序,並確實是那些有一個memberOf屬性:

HD Admin 
HD Helper 
HD Reset 
Security 

都應該被允許進入應用程序,我也(使用Apache目錄工作室之後)已經意識到,有很多的memberOf條目:

鮑勃例如可能有兩個條目的memberOf:

memberOf CN=Security,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu 

memberOf CN=HD Admin, OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu 

因此,如何將我的YAML的外觀和是合適的地方做這些事情?

authorizations: &AUTHORIZATIONS 
group_base: OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=nmsu,DC=edu 
    ## Requires config.ldap_check_group_membership in devise.rb be true 
    # Can have multiple values, must match all to be authorized 
    required_groups: 
    # If only a group name is given, membership will be checked against "uniqueMember" 
    - CN=HD Admin 
    - CN=HD Reset 
    - CN=Security 
    # If an array is given, the first element will be the attribute to check against, the second the group name 
    - ["memberOf", " CN=HD Admin,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"] 
    - ["memberOf", " CN=HD Helper,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"] 
    - ["memberOf", " CN=HD Reset,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"] 
    - ["memberOf", " CN=Security,OU=Groups,OU=Accounts,DC=ACN,DC=ad,DC=tdsu,DC=edu"] 

require_attribute: 
    memberOf: HD Admin 

我無法獲得所需的屬性,所以我離開基地?在由ldap設計寶石構建的設計腳手架中有沒有辦法做到這一點?因爲它確實是他們可以是任何這樣的團體,所以他們根本不必被放入應用程序。

至少也許是yaml的地方或不是試試這個地方? 更新:

我做了我上面提到的陣列嘗試它,並且config.ldap_check_group_membership = true;,它不會讓我在不管什麼了,所以它要麼全有或全無。即使把所有的成員數組降到一個我知道我的測試用戶有,它仍然不讓我進入。

我也想問,我應該只是保持以下發展:行和處理所有的檢查在代碼中的角色(是否有任何形式的鏈接如何做到這一點),也許我猜api文件(可能在github某處),雖然它可能更容易手動編碼所有的檢查等...手段我也必須更加熟悉設計。

我要補充我ldap.yml的休息是很重要的:

development: 
    host: directory.ldapstuff.com 
    port: 636 
    attribute: sAMAccountName 
    base: OU=Main Users, OU=Accounts, DC=ACN, DC=ad, DC=tdsu, DC=edu 
    admin_user: CN=EASApps, OU=LDAP, OU=Service Accounts, DC=ACN, DC=ad, DC=tdsu, DC=edu 
    admin_password: asfssfaf 
    ssl: true 
    # <<: *AUTHORIZATIONS 

回答

2

我想你只需要取消對# <<: *AUTHORIZATIONS合併。

+0

雖然我仍然有一個「或」的問題,但我做了一些事情,我不知道該怎麼說,如果他們是這個組或該組或該組的成員。在設計中可能無法實現? – Codejoy

+0

你的配置文件看起來類似於我自己的(不成功)嘗試使用'require_groups',檢查'memberOf'屬性。最後,我能夠從'require_attribute'範圍內獲得所需的內容。我發現很難看到LDAP請求是如何形成的,所以我使用Wireshark直接查看數據包並從那裏反向工作。 –