在没有SetSPN的Windows域上查询/更改SPN

有人在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"); } } } 

看起来此信息存储在servicePrincipalName AD属性中。 有关详细信息,请参阅此页面 ,尤其是“使用LDIFDE搜索”部分。

您可以在支持工具中使用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