我有一个使用一些后端服务器(UNC,HTTP和SQL)的Web应用程序。要获得此工作,我需要为运行IIS AppPool的帐户配置ServicePrincipalNames,然后允许Kerberos委派进入后端服务。

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

但是,该应用程序将部署到许多Active Directory环境中。手动配置委托已被证明是错误的,并且调试问题不足的原因是耗时的。我想创建一个可以为我完成的安装脚本或程序。

有人知道如何在AD中脚本或编程设置受约束的委派吗?

如果如何脚本读取允许的服务供用户验证其已正确设置的脚本?

有帮助吗?

解决方案

好的,在互联网上进行了大量挖掘并进行了一些测试之后,我有了前进的方向。

以下代码是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();
}

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top