C# 如何访问用户';在Active Directory上的文件夹中有他的用户名和密码吗?
我有一个系统,其中有一些用户注册为Active Directory用户。他们的一些文件夹被重定向到我们服务器上的一个目录 在我的测试环境中,有两个用户C# 如何访问用户';在Active Directory上的文件夹中有他的用户名和密码吗?,c#,active-directory,ldap,C#,Active Directory,Ldap,我有一个系统,其中有一些用户注册为Active Directory用户。他们的一些文件夹被重定向到我们服务器上的一个目录 在我的测试环境中,有两个用户User1和User2,他们的文档文件夹被重定向到我的服务器 User1的文件夹位于\\netapp\profiles\User1\Documents User2的文件夹位于\\netapp\profiles\User2\Documents 下面是我的管理员提供给我的服务器结构 dc.myDomain->DNS、DHCP、AD Drive.m
User1
和User2
,他们的文档
文件夹被重定向到我的服务器
的文件夹位于User1
\\netapp\profiles\User1\Documents
的文件夹位于User2
\\netapp\profiles\User2\Documents
- dc.myDomain->
DNS、DHCP、AD
- Drive.myDomain->我的web应用程序将在其上运行的服务器
- W8User1.myDomain->User1
- W8User2.myDomain->User2
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;
}
使用(var context=new PrincipalContext(ContextType.Domain,“,“DriveAdmin@”,“password”))
{
//用于身份验证的用户名和密码。
if(context.ValidateCredentials(“User1@”,“password”))
{
var de=newdirectoryEntry(@“LDAP://”、“User1@”、“password”);
DirectorySearcher search=新的DirectorySearcher(de);
var r1=“”;
foreach(searcher.FindAll()中的搜索结果)
r1+=s.路径+“
”;
var r2=“”;
foreach(Directory.GetDirectories(@“\\netapp\profiles\User1”)中的变量d)
r2+=d+“
”;
}
else///未经授权;
}
验证工作正常
r1
给了我很多我没有用过也不理解的记录,例如
LDAP://bilgiturk.depo/.blah blah DC。。诸如此类。。诸如此类
我甚至无法获得r2
,因为您可能会猜到它会导致访问被拒绝
异常
这是可行的吗?当我在网上搜索Active Directory C#内容时,我只会遇到Active Directory管理操作,如添加用户创建组等。所以我开始觉得这是不可能的?请指导我。您可以从Active directory中读取用户的姓名及其主目录-但是您无法读取用户的密码,因此您无法模拟该用户以访问其主目录 但是,您有两种选择:
:/这意味着我在这里做梦吗?没有任何解决办法吗?顺便说一句,设计是,用户将在我的web应用程序中键入他的用户名和密码,然后根据这些信息,我将完成这些工作?仍然不可能?好的,如果您从他那里获得了用户名和密码,您应该能够模拟该用户,连接到他或她的主目录,并在他(她)自己的凭据上下文中枚举文件。这应该可以-搜索“asp.net中的模拟”或者非常感谢。我在考虑这两种选择,但不确定它们是否可行。现在至少我知道我该去哪里了;)再次感谢。@marc_是对的。访问active directory只有在确定这些目录的位置时才有意义,如果这些数据存在的话。否则访问文件将需要“进程”以用户的身份运行我更喜欢第一种方法,我将尝试一下,当然可以接受这个答案。在您在
LogonUser
方法中建议的链接上,有一个参数logonType
,将其从LOGON32\u LOGON\u NETWORK
更改为LOGON32\u LOGON\u INTERACTIVE
,我已经实现了我想要做的事情。再次感谢。