0

ユーザーにアプリケーション ロール (メタ [ldap] で定義) を付与できるセルフ サービスを作成しています。メタの構造は均一ではありません。次のようになります。

o=meta
  ou=Firm
    ou=AppRoles
      ou=GitLab
        cn=Admin
        cn=User
      ou=SAP
        ou=SAPCRT
          cn=Admin
          cn=User
        ou=SAPLST
          ou=NW
            cn=Admin
            cn=User
          ou=ST
            cn=Admin
            cn=User

など...ご覧のとおり、cn (Approle) は常に同じレベルにあるとは限りません。

これは私がこれまでに持っているコードです。GitLab Admin と GitLab User のような 'ou's が見つかります。しかし、Gitlab 管理者、Gitlab ユーザー、SAP/SAPCRT 管理者、SAP/SAPCRT ユーザー、SAP/SAPLST/NW 管理者などのリストを受け取る必要があります。

base = 'ou=AppRoles,ou=Firm,o=META'
filter = Net::LDAP::Filter.begins('ou', query)

Net::LDAP を再帰的にフィルタリング/検索するように設定するにはどうすればよいですか?

4

1 に答える 1

0

AppRole の下にすべての cn が表示されるかどうかはわかりませんが、「puts」コマンドを使用すると出力が表示されます。このコード ブロックの戻り値を教えていただけますか?

def get_ldap_users(ldap_password)
      filter = Net::LDAP::Filter.eq("ou", "AppRoles")
      treebase = "dc=yourdomainhere"
      get_ldap(ldap_password).search(:base => treebase, :filter => filter) do |entry|
       puts "CN: #{entry.cn}"
      end
end
于 2019-09-13T17:34:12.227 に答える