【问题标题】:LDAP and ActiveDirectory authentication in C#C# 中的 LDAP 和 Active Directory 身份验证
【发布时间】:2014-09-25 16:26:30
【问题描述】:

我是 LDAP 和活动目录身份验证的新手,我只是研究了一些关于 LDAP 身份验证的东西并使用示例应用程序完成了

我只是检查用户是否存在于 ActiveDirectory 中

public static bool DoesUserExist()
  {
  using (var domainContext = new PrincipalContext(ContextType.Domain,Environment.UserDomainName))
   {
     using (var foundUser = UserPrincipal.FindByIdentity(domainContext, IdentityType.SamAccountName, Environment.UserName))
                {
                    return foundUser != null;
                }
            }
        }

在我们的本地系统中它工作正常,但是当我托管在 ActiveDirectory Server 中并且我尝试使用服务器 IP 地址访问它时,我遇到了一些问题,例如

ContextType.Domain,Environment.UserDomainName and  Environment.UserName

因为这三个值来自服务器信息而不是访问此应用程序的用户

所以请帮助我如何获取用户信息(谁访问此应用程序),以便我需要将这些信息传递给服务器并需要检查用户是否是 activedirectory 用户

【问题讨论】:

  • 这是一个 ASP.NET 应用程序吗?
  • 是... ActiveDirectory 身份验证使用 LDAP

标签: c# ldap userinfo


【解决方案1】:

Environment.UserDomainName 返回Environment.UserName 的域部分,例如“mydomain.com”,所以你不想要那个。

Environment.UserName 本身将返回当前“登录到 Windows”的用户,即应用程序池用户 - 请参阅 MSDN

您最好检查当前 Web 请求的身份,因此在 MVC 控制器或 WebForms 页面中,使用 this.User

或者,如果您使用 Windows 身份验证或将表单身份验证挂钩到 AD,则当前的 Thread Principal 应该是当前请求用户,因此您可以使用 Thread.CurrentPrincipal.Identity

【讨论】:

  • 是的,我尝试使用 Thread.CurrentPrincipal.Identity.Name 但在本地系统中它工作正常,但我托管在服务器上,但它仍然只返回服务器用户名而不是客户端用户名
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-08
  • 2012-09-02
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
相关资源
最近更新 更多