查询检索与ServicePrincipleName(SPN)关联的帐户

时间:2015-03-26 23:24:16

标签: c# scripting kerberos spn

我们有一个基于C#构建的内部网站,并提供各种各种功能的工具,以帮助公司查找/修改/添加服务帐户等。这些工具只是C#代码,可以自动执行这些任务。 /模糊

我被要求查找/创建一种输入SPN的方法,让它返回与之关联的服务帐户。

类似于:

输入:HTTP / server1.company.com

输出:SVC_ACCT_AWESOME

我得到的另一个请求是输入服务帐户名称并让它返回KVNO。

问题,我以前从未在C#做过任何事情。我已经加载了Visual Studio 2013,我想学习。我花了好几个小时倒在谷歌上,并没有找到除此之外有用的东西:

https://msdn.microsoft.com/en-us/library/vstudio/system.servicemodel.configuration.identityelement.serviceprincipalname(v=vs.100).aspx

不幸的是,这对我没有任何意义。

任何可以为这些特定任务提供的方向都将受到超级赞赏!

感谢。

1 个答案:

答案 0 :(得分:0)

我相信您可以使用以下内容查询AD for SPN:

using (var root = new DirectoryEntry()) // or pass in something like "LDAP://dc=example,dc=com" to query a different domain
using (var searcher = new DirectorySearcher(root))
{
    searcher.Filter = "(servicePrincipalName=HTTP/server1.company.com)";

    using (var results = searcher.FindAll())
    {
        foreach (SearchResult result in results)
            Console.WriteLine(result.Properties["samAccountName"][0]); // or whatever you want to do with it
    }
}

(这需要对System.DirectoryServices的引用)