Partager via


在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 Web Service调用, 以充分利用MSCRM对于用户的安全规则.  (比如说, 根据当前用户的权限来返回合适的数据.)  一般CRM用户在使用这种ISV页面中, 不需要经过CRM站点, 所以该场景一般只适用于基于Windows身份验证的On-Premise情况.  此时调用CRM Web Service代码比较简单, 可参见On-Premise Authentication.  这种情况中用户先会访问ISV站点, 然后ISV站点再访问CRM, 所以会有一个double-hop Kerberos authentication的问题.  具体的配置方式我们将在别的文章中和大家交流.

 

Thanks,
Chris

Comments

  • Anonymous
    August 31, 2010
    我有一个程序调用的是CRM的用户登陆信息,去登陆我这个程序。但是部署了IFD以后,直接等我的集成程序就提示用户不存在了,我想问一下通过什么样的方式能够解决这个问题呢?

  • Anonymous
    December 08, 2011
    博主,您好,请问这文章的内容是您自己写出来的吗?有几个问题想请教: 关于情景3,应该如何移植到一个php 或者 html页面中,来实现最基本的显示用户名的功能? 盼您回复,谢谢 i@windyland.com   373804860@qq.com