c# - 从 Azure Active Directory 获取 MVC Web App 中的 samAccountName 名称
问题描述
我需要在部署到 Azure Web 应用程序的 MVC C# 应用程序中获取 AD samAccountName。
该应用程序针对 Azure AD 进行了 Windows 身份验证,该应用程序使用 ADConnect 与我们的本地本地 AD 服务器同步。
当我们在本地运行 Web 应用程序 (Visual Studio 2017) 时,从以下位置返回的值:
User.Identity.Name
以 DOMAIN\UserName 格式返回
但是在 Azure 中查看 WebApp 时,相同的代码以 firstname.lastname@domain.co.uk 格式返回它
我明白我们将无法使用 User.Identity.Name 来获得一致的结果,但我们确实需要一种在站点运行 Azure 时获取此信息的方法。
我们已经查看了使用声明描述和扩展属性实现此目的的各种方法,但到目前为止都没有运气。
我已尝试提供尽可能多的信息,但我正在与我们的基础架构团队合作,因此可能提供的信息不够多,如果需要更多信息,请告诉我。
解决方案
“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;
推荐阅读
- python-2.7 - 为什么在打印 Python2.7 时缺少括号错误。python 2.7什么时候不支持括号?
- javascript - 如何使用 Node.js 和 Sequelize 将一列复制到同一表中的另一列
- java - 如何通过 OAuth 2.0 在 Azure 中使用 access_token
- java - 如果每个业务逻辑都不允许缺失值,为什么要使用 Optional.of 方法
- flutter - 如何在flutter中下载文件?
- php - 与 woocommerce 分开连接
- mysql - 无法在 ODBC 64 位上添加 MYSQL 系统 DSN
- r - 如何使用flowCore模仿R中flowjo的直方图?
- node.js - 如何在 postgresSQL 和 nodejs 中过滤
- python - 条件移位:在熊猫中使用多个条件从“当前行值”中减去“上一行值”