如何使用用户名和密码访问Active Directory上的用户文件夹

本文关键字:用户 Directory Active 文件夹 密码 何使用 访问 | 更新日期: 2023-09-27 18:10:34

我有一个系统,其中有一些用户注册为Active Directory用户。他们把他们的一些文件夹重定向到我们服务器上的一个目录。

在我的测试环境中,有2个用户User1User2,他们的Documents文件夹重定向到我的服务器。

  • User1的文件夹位于''netapp'profiles'User1'Documents

  • User2的文件夹位于''netapp'profiles'User2'Documents

下面是我的管理员提供给我的服务器结构。

  • myDomain -> DNS, DHCP, AD

  • 开车。myDomain ->服务器我的web应用程序将运行在

  • W8User1。myDomain -> User1

  • W8User2。myDomain -> User2

我想做的是为他们提供从我将开发的web应用程序中查看他们的文件的能力。我对活动目录的东西很陌生,甚至不确定它是否可能。以下是我到目前为止写的。

using ( var context = new PrincipalContext(ContextType.Domain, "<myDomain>", "DriveAdmin@<myDomain>", "password") ) 
{
    //Username and password for authentication.
    if ( context.ValidateCredentials("User1@<myDomain>", "password") )
    {
        var de = new DirectoryEntry(@"LDAP://<myDomain>", "User1@<myDomain>", "password");
        DirectorySearcher searcher = new DirectorySearcher(de);
        var r1 = "";
        foreach ( SearchResult s in searcher.FindAll() )
            r1 += s.Path + "<br>";
        var r2 = "";
        foreach ( var d in Directory.GetDirectories(@"''netapp'profiles'User1") )
            r2 += d + "<br>";
    }
    else /// unauthorized;
}

验证工作正常。

r1给了我很多我不使用也不理解的记录。

LDAP://bilgiturk.depo/…废话废话……所以

我甚至不能得到r2,因为你会猜它给出了Access Denied异常。

是可行的吗?当我在网上搜索活动目录c#相关内容时,我只遇到了活动目录管理操作,比如添加用户创建组之类的。所以我开始觉得这是不可能的?

如何使用用户名和密码访问Active Directory上的用户文件夹

您可以从Active directory中读出用户名和他的主目录,但是您不能读取用户的密码,因此您不能冒充该用户访问他的主目录。

但是,您确实有两个选择:

  1. 如果您直接从他那里获得用户的凭据(用户名和密码),您可以冒充该用户,并且在该用户的上下文中,您应该能够获得他自己的主目录中所有文件和文件夹的列表(请参见Rick Strahl的博客文章中的一种方法)

  2. 如果您可以在具有(只读,读目录)访问所有用户主文件夹的特定帐户下运行web应用程序,您甚至可以避免进行模拟(但在这种情况下,您的ASP. js . js . html)。. NET应用程序的帐户需要扩展访问权限)