在 AD 中自动设置受限的 Kerberos 委派

在 AD 中自动设置受限的 Kerberos 委派

我有一个使用一些后端服务器(UNC、HTTP 和 SQL)的 Web 应用程序。为了使其正常工作,我需要为运行 IIS AppPool 的帐户配置 ServicePrincipalNames,然后允许 kerberos 委派到后端服务。

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

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

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

如果失败的话,我该如何编写脚本来读取用户允许的服务以验证其是否已正确设置?

答案1

好的,经过在互联网上大量搜索和一些测试后,我解决了这个问题。

我没有找到可以通过批处理脚本帮我完成此操作的实用程序。不过,我确实找到了底层 LDAP 中需要哪些属性。所以我不得不编写自己的实用程序来帮我完成此操作。

以下 C# 代码可以设置或检查约束委派:

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

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

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

上面的代码是 C#,因为 Web 应用程序就是用 C# 编写的,因此很容易找到。我希望任何关注此内容的人都可以根据需要将其转录成另一种语言。

答案2

joeware“admod”实用程序这也做得很好。

admod -b“用户的完整 DN”“msDS-AllowedToDelegateTo:+:Service/server.xycom:port#”

意思:+:是“添加”,:-:实际上是删除,有关所有详细信息,请参阅帮助页面。

相关内容