确定当前用户是不是正在登录 Active Directory(或者是有效的 Active Directory 用户)

Posted

技术标签:

【中文标题】确定当前用户是不是正在登录 Active Directory(或者是有效的 Active Directory 用户)【英文标题】:Determining whether the current user is logging into Active Directory (or is a valid active directory user)确定当前用户是否正在登录 Active Directory(或者是有效的 Active Directory 用户) 【发布时间】:2011-04-02 10:25:58 【问题描述】:

上下文:Excel插件需要测试当前windows用户是否是有效的活动目录用户(并据此判断其他基于权限的逻辑)

我设置了 Active Directory 成员资格提供程序。使用 System.Security.Principal.WindowsIdentity 用户,我取出域名(用户帐户名称为 \),然后使用该用户名针对 Active Directory 中的 sAMAccountName 进行测试(Membership.GetUser())。

这是测试当前用户是否登录到活动目录的有效方法吗?

我觉得我只是在测试当前用户帐户名是否存在于 Active Directory 中,而实际上并不知道当前用户是否实际登录到 Active Directory。

再说一次,我不确定“登录到活动目录”是什么意思......我对活动目录很陌生!

【问题讨论】:

你错过了这里的一些上下文吗?您谈到了 Excel 插件,然后谈到了 Active Directory 成员资格提供程序。据我所知,Active Directory Membership Provider 用于 ASP.NET。它与您的 Excel 插件有什么关系? 我缺少上下文!抱歉,我错过了其中的重要一步。身份验证实际上发生在 WCF 服务中,excel 插件通过该服务向 AD 提供程序进行调用。但是,我的测试是使用一个简单的命令行应用程序进行的。似乎工作正常! 【参考方案1】:

也许这会对你有所帮助:

检索到 WindowsIdentity 后,您可以读取其 User 属性以获取唯一标识用户的 SecurityIdentifier (SID)。

如果您想确定此帐户是否存在于 Active Directory 存储中,您可以不按用户名搜索目录,而是使用 SecurityIdentifier。这样就不用担心用户名混淆了。

如果您想确定用户登录的是哪个域;您可以读取用户 SecurityIdentifier 的 AccountDomainSid 属性。这将为您提供唯一标识域的 SecurityIdentifier。

【讨论】:

谢谢!这让我更加确信我正在查看的用户凭据是正确的。

以上是关于确定当前用户是不是正在登录 Active Directory(或者是有效的 Active Directory 用户)的主要内容,如果未能解决你的问题,请参考以下文章

Macos:使用objective-c确定用户帐户是不是是Active Directory用户与本地用户

Embedded JS Partials - 确定用户是不是登录

如何确定用户是不是关闭了 google auth2.signIn() 窗口?

Symfony2 - 将当前登录的用户注入监听器

Jenkins + Active Directory身份验证 - 缓慢登录

用于查看当前登录用户(域和机器)+ 状态(活动、空闲、离开)的 Powershell 脚本