我有一个使用一些后端服务器(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#”
意思:+:
是“添加”,:-:
实际上是删除,有关所有详细信息,请参阅帮助页面。