gpt4 book ai didi

.net - 如何在 .NET Web 应用程序中为经过身份验证的用户获取 UPN,而不查询 Active Directory

转载 作者:行者123 更新时间:2023-12-05 00:00:01 24 4
gpt4 key购买 nike

(这个问题类似于 Get UPN or email for logged in user in a .NET web application ,但不完全相同。)

在使用 Windows 身份验证的 .NET (C#) Web 应用程序中,我想找到登录用户的 UPN。

我知道如何通过查询 Active Directory 来做到这一点:从 HttpContext.Current.User.Identity as WindowsIdentity 中获取“DOMAINNAME\userName” ;在 ldap://RootDSE 下查找 DOMAINNAME并找到它的 dnsRoot ;查询 (&(objectCategory=person)(objectClass=user)(sAMAccountName=...userName...))ldap://...dnsRoot... ;获取此条目的 userPrincipalName属性(property)。 (更多细节在回答 https://stackoverflow.com/a/513668/223837 中)。

我的问题:是否可以在不调用 Active Directory 的情况下找到 UPN?鉴于 Microsoft 专注于在任何地方使用 UPN,UPN 是不是已经存储在用户向 Web 服务器进行身份验证时创建的 token 中的某处?

(支持观察:如果我在 Windows 7 上运行 whoami /upn,那么 Wireshark 不会显示任何 Active Directory 连接。)

(如果有什么不同:请注意,我们的 Web 应用程序确实 不使用模拟 ,即我们的 Web 应用程序不在用户身份下运行。)

最佳答案

试试 System.DirectoryServices.AccountManagement.UserPrincipal.Current ,它具有属性 UserPrincipalName .当然,这需要应用程序在 Windows 身份验证下运行。

编辑 嗯,看起来这个 API 仍然执行目录查找。

关于.net - 如何在 .NET Web 应用程序中为经过身份验证的用户获取 UPN,而不查询 Active Directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10946163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com