2016-09-28 61 views
0

我將從LDAP服務器檢索用戶信息。客戶給我發了以下3個數據:是否可以用Perl顯示ldap文件夾結構?

  1. LDAP服務器IP
  2. 用戶名來驗證
  3. 密碼來驗證

這是第一時間我與LDAP工作,所以我研究了它。我看到我必須使用像cn,dc,ou這樣的參數。客戶不應該提供這些信息嗎?或客戶的信息是足夠的,我可以通過顯示文件夾結構的代碼找到這些參數?

+0

它是什麼類型的目錄?提供的用戶名是什麼樣的? – EricLavault

+0

我將檢索用戶信息。我不知道任何其他信息。我的問題是,我是否必須向客戶詢問這個問題,或者有什麼方法可以查看LDAP服務器的目錄層次結構 –

+0

如果您不熟悉LDAP,最好知道需要處理的目錄類型。 。一旦你設法閱讀一些條目,你可以猜出它。您是否設法綁定並執行搜索? – EricLavault

回答

0

您要查看的結構稱爲目錄樹,由LDAP「條目」(不是文件夾)組成。

您應該能夠從您的目錄中收集條目,前提是您提供的憑據足夠。爲此,您需要一個客戶端庫,您可以使用Perl LDAP

使用該庫,你會做這樣的事情:

use Net::LDAP; 

# Init connection and bind to the directory. 
$ldap = Net::LDAP->new('ldaphost.example.com') or die "[email protected]"; 
$mesg = $ldap->bind ($binddn, password => $password); 

# Perform a search on the whole tree below (and including) the base object. 
$mesg = $ldap->search(base => $basedn); 

# Handle error 
$mesg->code && die $mesg->error; 

# Display results 
foreach $entry ($mesg->entries) { $entry->dump; } 

$mesg = $ldap->unbind; 

上面的代碼只是打印入口到標準輸出($入門>轉儲)。

  • $binddn是dn進行身份驗證。如果你有一個簡單的用戶名不是DN,比如'username'而不是像uid=username,dc=example,dc=com這樣的名字,這可能意味着你正在處理Active Directory。在這種情況下,您可以嘗試使用與以下模式對應的binddn進行綁定:'[email protected]'
  • basedn是基礎對象條目的dn,搜索在基礎對象下面的整個樹上執行(並且包括)。你將不得不指定一個有效的基地DN。

您可以嘗試猜測使用哪個基準dn。域組件(dc)通常與FQDN匹配,但不能保證它會生成有效的基本dn(例如,'ldaphost.example.com'將給出'dc=example,dc=com')。但是,您可以查詢的RootDSE信息的服務器和檢索namingContexts(或defaultNamingContext如果有的話),並使用其中之一作爲基準DN:

$ldap->search(base => '', attrs => 'namingContexts'); 

這就是說,如果你真的想顯示的目錄樹,你最好使用LDAP Explorer,如Apache Directory Studio

請注意,LDAP不限於以嚴格的「樹」結構存儲信息,它只需要遵守目錄信息樹(DIT)命名法。

相關問題