自动设置kerberos委托

时间:2010-12-03 10:08:29

标签: installation kerberos delegation

我有一个使用一些后端服务器(UNC,HTTP和SQL)的Web应用程序。为了实现这一点,我需要为运行IIS AppPool的帐户配置ServicePrincipalNames,然后允许kerberos委派给后端服务。

我知道如何通过AD用户和计算机工具的“委派”选项卡进行配置。

但是,该应用程序将部署到许多Active Directory环境中。事实证明,手动配置委派是容易出错的,调试错误配置导致的问题非常耗时。我想创建一个可以为我执行此操作的安装脚本或程序。

有没有人知道如何在AD中编写脚本或以编程方式设置约束委派?

如果没有,我怎么能为用户编写允许的服务脚本来验证它是否已正确设置?

1 个答案:

答案 0 :(得分: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();
}

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