3

有人在 Windows 域上查询/更改 SPN 有什么运气吗?Google 上的大多数点击都与 SQL 相关:我自己找不到任何有关如何执行此操作的信息。最重要的事情是查询 SPN 配置并检查重复项。

根据 Arnout,我编写了以下代码:

static void Main(string[] args) {
    ValidateSPN("K2Server/jonathand-vpc:5252");
}

static void ValidateSPN(string spn) {
    const string queryFormat = "(ServicePrincipalName={0})";
    using (Domain localDomain = Domain.GetCurrentDomain()) {
        using (DirectorySearcher search = new DirectorySearcher(localDomain.GetDirectoryEntry())) {
            search.Filter = string.Format(queryFormat, spn);
            search.SearchScope = SearchScope.Subtree;
            SearchResultCollection collection = search.FindAll();
            if (collection.Count > 1)
                throw new Exception("Duplicate SPNs found.");
            else if (collection.Count == 0)
                throw new Exception("No such SPN");
        }
    }
}
4

2 回答 2

2

看起来此信息存储在servicePrincipalNameAD 属性中。有关更多信息,请参阅此页面,特别是“使用 LDIFDE 搜索”部分。

于 2009-01-06T13:00:30.053 回答
0

您可以使用支持工具中的 Search.VBS 来搜索重复的 SPN:

"C:\Program Files\Support Tools\search.vbs" "LDAP://DC=Your,dc=Domain,dc=Here" /C:"(serviceprincipalname=K2Server/jonathand-vpc:5252)" /S:Subtree /P:DistinguishedName
于 2009-03-03T03:52:59.517 回答