从Azure Active Directory获取MVC Web应用程序中的samAccountName名称

时间:2018-10-19 13:51:30

标签: c# azure model-view-controller active-directory azure-active-directory

我需要在已部署到Azure Web应用程序的MVC C#应用程序中获取AD samAccountName。

该应用程序已针对Azure AD进行了Windows身份验证,并使用ADConnect与我们本地的本地AD服务器进行了同步。

当我们在本地运行Web App(Visual Studio 2017)时,返回的值是:

User.Identity.Name

以DOMAIN \ UserName格式返回

但是在Azure中查看WebApp时,相同的代码以firstname.lastname@domain.co.uk的格式返回它

我很高兴我们无法使用User.Identity.Name来获得一致的结果,但是我们确实需要一种在网站运行Azure时获取此信息的方法。

我们已经研究了使用Claims Descriptions和Extended Properties实现此目的的各种方法,但到目前为止还没有运气。

我尝试提供尽可能多的信息,但是我正在与我们的基础架构团队合作,因此可能没有提供足够的信息,请让我知道是否需要更多信息。

1 个答案:

答案 0 :(得分:0)

“ firstname.lastname@domain.co.uk”格式将是帐户的userPrincipalName属性。因此,如果您在名称中看到“ @”,则可以连接到AD并搜索该帐户并拉出sAMAccountName。像这样:

var searcher =
    new DirectorySearcher(
        new DirectoryEntry("LDAP://domain.co.uk"),
        $"(&(objectClass=user)(userPrincipalName={User.Identity.Name}))");
searcher.PropertiesToLoad.Add("sAMAccountName");
var result = searcher.FindOne();
var sAmAccountName = result.Properties["sAMAccountName"][0] as string;