我有一个系统,其中有一些用户注册为Active Directory用户。并且他们有一些文件夹重定向到我们服务器中的目录。
在我的测试环境中,有2个用户User1
,User2
并且他们的Documents
文件夹已重定向到我的服务器。
User1
的文件夹位于 \\netapp\profiles\User1\Documents
User2
的文件夹位于 \\netapp\profiles\User2\Documents
下面是我的管理员为我提供的服务器结构。
直流电 myDomain- >DNS, DHCP, AD
驾驶。myDomain- >我的Web应用程序将在其上运行的服务器
W8User1。myDomain- > User1
W8User2。myDomain- > User2
我正在尝试为他们提供从我将要开发的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/ ..等等等等DC ..等等等等OU ..等
而且我什r2
至无法得到您所想的Access Denied
例外。
是可行的吗?当我在网上寻找Active Directory C#时,我只会遇到Active Direcrory管理操作,例如添加用户创建组等。因此,我开始感觉到这甚至是不可能的?请指导我。
你可以读出用户的名字,他的主目录,从Active Directory -但你CAN NOT读取用户的密码,所以你不能冒充该用户可以访问自己的主目录。
但是,您确实有两个选择:
如果直接从用户那里获得用户的凭据(用户名和密码),则可以模拟该用户,并且在该用户的上下文下,您应该能够获得其自己主目录中所有文件和文件夹的列表(请参阅Rick) Strahl的博客文章(一种实现方法)
如果可以在具有(只读,读取目录)访问所有用户主文件夹权限的特定帐户下运行Web应用程序,则甚至可以避免进行模拟(但在这种情况下,ASP.NET应用程序的帐户需要扩展访问权限)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句