windows集成身份验证登录模式下,用户登录成功后怎样从active directory上取得用户详细信息

i疾风 2015-05-22 02:01:31
登陆的时候是WINDOWS集成登陆,现在想要取AD中的数据。
用的方法:
DirectoryEntry entry = new DirectoryEntry("LDAP://域名",域内任一帐户名","password" );
DirectorySearcher mySearcher = new DirectorySearcher(entry);

mySearcher.Filter = "(&(objectClass=user)(cn=" + user.Name + "))"; //搜索适配器
mySearcher.PropertiesToLoad.Add("userPrincipalName");//添加自己需要找的属性
mySearcher.PropertiesToLoad.Add("department");
mySearcher.PropertiesToLoad.Add("mail");
mySearcher.PropertiesToLoad.Add("title");
var result = mySearcher.FindOne(); //找到自己需要的一个


如上的代码是完全能够实现的。
那么问题来了,因为windows已经集成登陆过,现在的这个账户密码我是写死在代码里的(无论谁登陆都是用我自己的域内账号来访问AD)。我想知道不写这个密码怎么去访问AD?直接去了username和password在自己创建的console程序里好使,但是放在asp.net上就不好使了。
有没有大神帮忙回答下怎么解决,是要换方法吗?

有看过网上说是double-hop的问题,但是我只是在开发一个sharepoint portal上的feature而已,没有权限取改登陆方式,验证方式什么的
...全文
298 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
i疾风 2015-06-09
  • 打赏
  • 举报
回复
最后有了新的解决方法。 如果不需要跨越,在sharepoint上开发的网站,用户页只允许当前域用户登陆的情况下,首先用
System.Security.Principal.WindowsIdentity
验证用户是否为当前所登陆的用户。我的情况是iuser,即IISuser登陆,这个用户固然是不能访问域的。 那么
 SPSecurity.RunWithElevatedPrivileges(delegate()
            {})
切换为当前登陆sharepoint用户,若用户与web所在同一个域,且用户已经登陆网站的情况下,使用directortSearch访问域就不需要再次 输入用户名密码了。 关于 SPSecurity.RunWithElevatedPrivileges(delegate(){})我之前一直以为是提权限操作,提成超级用户。不想这次发现并不是我想的超级用户,而是变成了当前登录用户。关于这个函数后续我会再研究下在博客里记录一下~有懂得大神在这里指点小弟一二也可以~谢谢~
i疾风 2015-06-05
  • 打赏
  • 举报
回复
谢谢雨神~最后确实是将AD上的内容同步到了sharepoint上进行处理。 访问域要把明文账号密码写死到代码里,这样很不好。
Justin-Liu 2015-05-25
  • 打赏
  • 举报
回复
访问域需要有相应的授权啊 按霖雨说的用UserProfile同步吧,然后读SharePoint上的信息
why_1001 2015-05-22
  • 打赏
  • 举报
回复
按一楼的方法试试!
why_1001 2015-05-22
  • 打赏
  • 举报
回复
同问大神!
霖雨 版主 2015-05-22
  • 打赏
  • 举报
回复
试试开启user profile服务,然后从里面获取用户信息

3,244

社区成员

发帖
与我相关
我的任务
社区描述
企业开发 SharePoint
社区管理员
  • SharePoint社区
  • 霖雨 - LinyuLoveTJ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧