(转)ASP.NET中启用Windows集成验证,怎样在调用System.DirectoryServices下的组件时传递安全上下文,也就是说当前用户凭据,来实现权限管理
Posted on 2007-09-20 15:06 chenjl 阅读(379) 评论(0) 收藏 举报
原文地址:http://blog.csdn.net/sinsel/archive/2007/03/08/1524004.aspx
System.DirectoryServices.DirectoryEntry de = new System.DirectoryServices.DirectoryEntry(
"LDAP://22.11.21.232:389/OU=ou0000_team,OU=ou0000_unit,OU=ou0000_division,DC=bocadtest,DC=com",
"administrator", "admin",System.DirectoryServices.AuthenticationTypes.Secure);
System.DirectoryServices.DirectoryEntry de = new System.DirectoryServices.DirectoryEntry(
"LDAP://22.11.21.232:389/OU=ou0000_team,OU=ou0000_unit,OU=ou0000_division,DC=bocadtest,DC=com");
在ASP.NET中, 启用Windows集成验证,这样我们就有了登陆网页的用户名和密码的哈希版本,但是我们是不能直接使用的,因为是密码的哈希版本,而不是密码本身。
比如:
System.DirectoryServices.DirectoryEntry de = new System.DirectoryServices.DirectoryEntry(
"LDAP://22.11.21.232:389/OU=ou0000_team,OU=ou0000_unit,OU=ou0000_division,DC=bocadtest,DC=com",
"administrator", "admin",System.DirectoryServices.AuthenticationTypes.Secure);
我们不能使用此构造函数来传入用户名和密码,所以只能把此ASP.NET运行线程的安全上下文传递过去,这样的话,我们需要在Web.config中,加入下面的标记:
<authentication mode="Windows" />
<identity impersonate="true"/>
这样的话,就可以把安全上下文传递下去了,使用下面的构造函数:
System.DirectoryServices.DirectoryEntry de = new System.DirectoryServices.DirectoryEntry(
"LDAP://22.11.21.232:389/OU=ou0000_team,OU=ou0000_unit,OU=ou0000_division,DC=bocadtest,DC=com");这样就可以用用户的权限来操作active directory了。当然如果使用带用户名密码的构造函数也可以,因为用户名和密码已经不起作用。
资料:http://support.microsoft.com/kb/329986/zh-cn
浙公网安备 33010602011771号