我的系统中有一些用户注册为Active Directory用户。他们将一些文件夹重定向到我们服务器的目录。
在我的测试环境中,有2个用户User1
和User2
,他们将Documents
个文件夹重定向到我的服务器。
User1
的文件夹位于\\netapp\profiles\User1\Documents
User2
的文件夹位于\\netapp\profiles\User2\Documents
以下是我的管理员为我提供的服务器结构。
dc。 myDomain - > DNS, DHCP, AD
云端硬盘。 myDomain - >我的Web应用程序将在
W8User1。 myDomain - >用户1
W8User2。 myDomain - >用户2
我要做的是让他们能够从我将要开发的Web应用程序中查看他们的文件。我对这个Active Directory的东西很新,甚至不确定它是否可能。这是我到目前为止所拥有的。
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/..blah blah DC .. blah blah OU ..等等
我甚至无法得到r2
,因为您认为它会导致Access Denied
例外。
可行吗?当我在网上搜索Active Directory C#的东西时,我只遇到了Active Direcrory管理操作,比如添加用户创建组等等。所以我开始觉得它甚至不可能?请指导我。
答案 0 :(得分:2)
您可以从Active Directory中读出用户的姓名和主目录 - 但是不能读取用户的密码,因此您无法模拟该用户访问其主目录。
但是你有两个选择:
如果您直接从他那里获得用户的凭据(用户名和密码),您可以模仿该用户,并且在该用户的上下文中,您应该能够获得他自己的主目录中的所有文件和文件夹(请参阅Rick Strahl's blog post了解一种方法)
如果您可以在具有(只读,读取目录)访问所有用户主文件夹的特定帐户下运行Web应用程序,您甚至可以避免进行模拟(但在这种情况下,您的ASP.NET应用程序的帐户需要扩展访问权限)