在ISV页面中调用CRM Web Service时使用Impersonate的几个场景

MSCRM作为平台, 其扩展性已为大家所熟悉.  作为扩展的终极方案, 加入自己编写的ASPX页面并在页面里调用MSCRM的Web Service, 能实现更为复杂的客户需求.  我们知道MSCRM中的所有操作都需要有身份验证, 调用Web Service也不会例外.  本文讨论了如何在自己编写的ASPX页面(下文称为ISV页面)中用正确的身份模拟(Impersonate)调用MSCRM的Web Service的几个场景.   场景一  ISV页面部署在CRM站点的ISV目录下  这种情况下无论你的CRM使用的是On-Premise还是IFD的认证方式, 都必须使用CrmImpersonator类, 将调用CRM Web Service的代码写在CrmImpersonator的段落中.  CrmImpersonator会建立一个线程, 将当前CRM使用者的身份运用到调用的CRM Web Service中. 该场景的实现方法, 请参见 Authentication from an ASPX Page   场景二  ISV页面部署在非CRM站点, 使用者是非CRM用户 这种场景常见于CRM与其它接口的互动, 比如从公司的Internet网页获得客户数据, 或者CRM与其它应用进行的数据交互.  因为ISV页面的使用者不是CRM用户, 我们必须指定一个CRM用户的身份来调用CRM Web Service, 这可以非常容易的在代码中实现.  注意这个时候CRM用户需要有合适的权限来执行ISV页面中CRM相关操作. 该场景的实现方法, On-Premise验证方式请参见 Impersonation, IFD验证方式请参见 Web Form (IFD) Authentication   场景三  ISV页面部署在非CRM站点, 使用者是CRM用户 这时候一般会要求使用当前用户的身份来运行ISV页面中的CRM…

2