2010-12-03 149 views
1

我有一個使用一些後端服務器(UNC,HTTP和SQL)的Web應用程序。爲了得到這個工作,我需要爲運行IIS AppPool的帳戶配置ServicePrincipalNames,然後允許kerberos委派到後端服務。自動設置kerberos委託

我知道如何通過AD用戶和計算機工具的「委派」選項卡進行配置。

但是,該應用程序將部署到許多Active Directory環境。事實證明,手動配置委派很容易出錯,調試錯誤配置導致的問題非常耗時。我想創建一個安裝腳本或程序,可以爲我做到這一點。

有誰知道如何腳本或以編程方式在AD內設置約束委派?

失敗,我如何腳本讀取允許的服務,用戶驗證它已被正確設置?

回答

3

好吧,經過大量的互聯網和一些測試的挖掘,我有一個前進的方向。

以下代碼是c#。 可以通過setspn實用程序爲用戶或計算機設置SPN。

或者,下面的C#代碼可以做同樣的:

DirectoryEntry de = new DirectoryEntry("LDAP://"+usersDN); 

if (!de.Properties["servicePrincipalName"].Contains(spnString)) 
{ 
    de.Properties["servicePrincipalName"].Add(spnString); 
    de.CommitChanges(); 
} 

要設置約束委派:

if (!de.Properties["msDS-AllowedToDelegateTo"].Contains(backendSpnString)) 
{ 
    de.Properties["msDS-AllowedToDelegateTo"].Add(backendSpnString); 
    de.CommitChanges(); 
} 

如果用戶已經有了非約束委派啓用,您可能需要關閉這在啓用約束之前關閉 - 但我沒有完全測試這種情況。