您的位置:首页 > 其它

下午解决了一个问题

2003-10-24 22:06 267 查看
我们定制的基于SharePoint Service的站点中的用户管理,在增加新用户时包含了两个动作:
1、通过.Net中的DirectoryService在相应的OU(我们给每个客户分配了一个OU,以便于管理)中增加一个用户;
2、把第1步创建的用户增加到当前SharePoint站点的用户中

在做第一步时遇到一个问题,因为新增用户这个操作是给用户站点的管理员进行的,而用户站点管理员这个用户帐号在服务器上并不是属于Domain Admin的角色,所以是没有通过Active Directory新增用户帐号的权限的。

解决方法是利用角色模拟,在需要新增域中的用户时,模拟一个具有这个权限的用户进行模拟,完成这个操作后,再结束模拟。

WindowsIdentity类是用来描述Windows用户的类,它有一个方法Impersonate(),可以模拟某一用户,但是它需要一个IntPtr类型的表示要模拟的用户的Token Handle来作为参数,这时需要用到Win API来得到这个Handle,所以自己又写了一个类来封装这个操作。

示范代码:
// IdentityImpresonation是自定义的用来表示用户模拟的类,构造函数
// 参数分别为:要模拟的用户的用户名、密码、所在域(或机器名)
IdentityImpersonation imper = new IdentityImpersonation("tsg", "123456", "webreal");
imper.BeginImpersonation();
// 进行某些操作
imper.StopImpersonation();

这个类的源码:http://blog.joycode.com/kaneboy/posts/3801.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: