2010-12-03 124 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(); 
} 

如果用户已经有了非约束委派启用,您可能需要关闭这在启用约束之前关闭 - 但我没有完全测试这种情况。