我们有三台服务器,它们都共享同一个数据库。一台服务器是面向互联网的。
我在CRM中的IFRAME中有一个网页,它使用内部连接的标准方法与CRM web服务进行对话。当通过IFD显示此IFRAME,并且用户通过表单身份验证元素登录时,系统会要求您提供登录凭据。
我该如何解决这个问题呢?
编辑
面向CRM服务的IFRAME位于四个服务器上。其中两台服务器用于IFD和内部部署。另外两个仅用于内部部署。它们都在相同的域中。所有用户都是内部用户,如果他们使用客户的计算机或网吧中的机器,则可以通过web登录,因此无法使用VPN。
发布于 2009-04-24 01:19:55
一些问题可以更好地理解你的问题。以CrmService为目标的iframe是否在同一个IFD服务器上?IFD服务器是否与其他服务器在同一个域中?当您说用户已登录时,您是指本地域用户还是外部用户?
发布于 2009-04-24 10:03:28
我怀疑问题不在于服务,而在于IFrame。当您通过on-premise向MSCRM进行身份验证时,您正在进行Windows身份验证,当您应该向IFrame发送该身份验证请求时,将再次执行该身份验证请求。因为浏览器知道它需要的一切,所以这一切都是透明地处理的。
使用IFD时,您不是在web服务器级别上使用身份验证,而是在应用程序级别上使用基于表单的身份验证。但是您的IFrame仍然需要身份验证,因此iframe会提示您进行身份验证。
如果您遇到服务问题,IFrame将显示,并且触发服务调用的任何操作都将失败,并显示400或500错误。
因此,问题来了,如何构建一个能够满足windows身份验证和基于表单的web页面?这在MSCRM中很简单,首先确保您没有在网页上运行身份验证-将其设置为匿名。这将确保不再出现弹出窗口,然后确保您使用CrmAuthenticationToken代码来获取令牌并将其用于所有调用。您不应该设置服务本身的.Credentials属性。
发布于 2009-04-24 16:56:15
假设您在CRM网站(而不是自己的虚拟目录)中部署页面,那么可以在SDK文章中找到Robert提到的内容:
请参阅SDK主题:从ASPX页进行身份验证。
根据我的经验,你应该在客户关系管理网站的网页中使用CRMImpersonator。
现在,如果您已经在自己的网站上运行了自己的页面:您将希望看到Discovery服务,并获得用于访问这些服务的CRM票证。
https://stackoverflow.com/questions/759769
复制相似问题