我需要在已部署到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实现此目的的各种方法,但到目前为止还没有运气。
我尝试提供尽可能多的信息,但是我正在与我们的基础架构团队合作,因此可能没有提供足够的信息,请让我知道是否需要更多信息。
答案 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;