解惑

解己之惑,解人之惑

标签:impersonate

MAPI32的Impersonate的问题

这个其实是 用代码创建MAPI的Profile的后续问题,因为我们把这个东西封装在Web Service里面供远程的其他程序调用,而这个Web Service的运行身份很重要,结合到底是谁?讲的,我们期望是可以通过Impersonate创建在我们指定的用户下面,但是MAPI32是根据当前的Process的用户身份,也就是Application pool的运行用户来读取注册表创建Profile的,所以Impersonate基本上没有用,有一些方法:http://blogs.msdn.com/stephen_griffin/archive/2005/04/13/407925.aspx ,但是基本上对我们不适用。

到底是谁?

Windows的IIS应用的身份真的是太复杂了一点。
首先是IIS的Service是有运行用户的
然后是应用使用的Application Pool也有运行用户
然后是应用也可以指定Impersonate的用户
而如果应用没有使用Windows的用户,那么还可能有另外一个用户。

以前没有搞过Windows的Web的开发,不太清楚这个里面的最佳实践。

目前的感觉是:
IIS的身份一般不去动,因为是大家共享的
如果需要比较强的用户身份,而且比较固定,建议修改Application Pool的运行身份,另外建议创建自己的Application Pool,如果应用只是简单的需要某种身份访问系统中的资源,例如读写文件、服务数据库,那么建议简单的修改web.config,使用Impersonate指定一个用户。

© 2024 解惑

本主题由Anders Noren提供向上 ↑