[c#] 在沒有SetSPN的Windows域上查詢/更改SPN



Answers

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

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





Links