我们有三台服务器共享同一个数据库。一台服务器面向互联网。
我在CRM中的IFRAME中有一个网页,它使用标准的内部连接方法与CRM Web服务进行通信。当IFD通过表单身份验证元素登录时,通过IFD显示此IFRAME时,系统会要求您提供登录凭据。
我该如何解决这个问题?
修改
针对CRM服务的IFRAME位于四台服务器上。其中两台服务器用于IFD和内部部署。另外两个仅用于内部部署。它们都在同一个域中。所有用户都是内部用户,如果他们使用客户的计算机或网吧中的计算机,则可以通过网络登录,因此无法使用VPN。
答案 0 :(得分:0)
一些问题可以更好地了解您的问题。 iframe是否在同一IFD服务器上以CrmService为目标? IFD服务器与其他服务器位于同一个域中吗?当您说用户已登录时,您是在向本地域用户还是外部用户进行裁判?
答案 1 :(得分:0)
我怀疑问题不是服务,而是IFrame。当您通过内部部署对MSCRM进行身份验证时,您正在进行Windows身份验证,并且当您应该再次执行身份验证请求的IFrame时。由于浏览器知道它需要的一切,所以这一切都是透明处理的。
使用IFD时,您没有在Web服务器级别上使用身份验证 - 您使用的是基于应用程序级别的表单。你IFrame仍然需要身份验证,因此iframe会提示进行身份验证。
如果您遇到服务问题,IFrame会显示以及触发服务调用的操作会因400或500错误而失败。
所以问题在于如何构建一个可以满足Windows身份验证和表单的网页?那么在MSCRM中很容易,首先要确保你没有在网页上运行身份验证 - 将其设置为匿名。这确保不再有弹出窗口,然后确保使用CrmAuthenticationToken代码获取令牌并将其用于所有调用。您不应该设置服务本身的.Credentials属性。
答案 2 :(得分:0)
假设您正在CRM网站(而不是自己的虚拟目录)中部署您的页面,那么这里指向您关于Robert提到的SDK文章:
请参阅标题为:从ASPX页面进行身份验证的SDK主题。
根据我的经验,您应该始终在CRM网站的网页中使用CRMImpersonator。
现在,如果您在自己的网站上运行自己的页面: 您将希望查看Discovery服务并获取用于访问服务的CRM票证。