c# - 从 Azure Active Directory 获取 MVC Web App 中的 samAccountName 名称

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

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

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

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

User.Identity.Name

以 DOMAIN\UserName 格式返回

但是在 Azure 中查看 WebApp 时,相同的代码以 [email protected] 格式返回它。

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

我们已经研究了使用声明描述和扩展属性来实现此目的的各种方法,但到目前为止还没有成功。

我已尝试提供尽可能多的信息,但我正在与我们的基础架构团队合作,因此可能无法提供足够的信息,如果需要更多信息,请告诉我。

最佳答案

[email protected] ”格式将是帐户的 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;

关于c# - 从 Azure Active Directory 获取 MVC Web App 中的 samAccountName 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52893749/

相关文章:

c# - 使用反射将可空属性复制到非可空版本

azure - 是否可以根据 Azure DevOps 中的其他字段选择自动填充字段?

azure - Web 部署包在部署时抛出 ERROR_SITE_DOES_NOT_EXIST

c# - 需要有关从 C# 中的 Directory.GetFiles 方法中过滤掉某些文件名的好方法的建议

c# - 在 C# 中使用 TaskDialogIndirect

c# - 如何在更新另一个表时自动更新一个表使用 C#

c# - 带有 DapperExtensions 的谓词

azure - 在 azure 上存储图像和视频的最佳方式

php - MVC - 它在现实世界中是如何工作的?

java - 在类中设置 "this"