0

我们有三台服务器,它们都共享同一个数据库。一台服务器面向互联网。

我在 CRM 的 IFRAME 中有一个网页,它使用本地连接的标准方法与 CRM Web 服务对话。当此 IFRAME 通过 IFD 显示且用户通过表单身份验证元素登录时,系统会要求您提供登录凭据。

我该如何解决这个问题?

编辑

以 CRM 服务为目标的 IFRAME 位于四台服务器上。其中两台服务器用于 IFD 和内部部署。另外两个仅用于内部部署。它们都在同一个域中。所有用户都是内部用户,如果他们使用客户的计算机或网吧的机器,可以通过网络登录,因此无法使用VPN。

4

3 回答 3

0

我怀疑问题不是服务,而是 IFrame。当您通过内部部署向 MSCRM 进行身份验证时,您正在执行 Windows 身份验证,并且当您应该再次完成身份验证请求的 IFrame 时。由于浏览器知道它需要的一切,这一切都是透明的。

使用 IFD 时,您没有在 Web 服务器级别使用身份验证 - 您正在使用基于应用程序级别的表单进行身份验证。您的 IFrame 虽然仍然需要身份验证,因此 iframe 会提示进行身份验证。

如果您遇到服务问题,则会显示 IFrame,并且触发服务调用的任何操作都会失败并出现 400 或 500 错误。

那么问题来了,如何构建一个可以满足 Windows 身份验证和基于表单的网页?嗯,这在 MSCRM 中很容易,首先确保您没有在网页上运行身份验证 - 将其设置为匿名。这样可以确保不再弹出窗口,然后确保您使用 CrmAuthenticationToken 代码来获取令牌并将其用于所有调用。您不应该设置服务本身的 .Credentials 属性。

于 2009-04-24T10:03:28.303 回答
0

假设您在 CRM 网站(而不是其自己的虚拟目录)中部署您的页面,那么这里将向您指出 Robert 提到的 SDK 文章:

请参阅标题为:来自 ASPX 页面的身份验证的 SDK 主题。

根据我的经验,您应该始终在 CRM 网站的网页中使用 CRMImpersonator。

现在,如果您在自己的网站上运行自己的页面:您将希望看到 Discovery 服务并获得用于访问服务的 CRM Ticket。

于 2009-04-24T16:56:15.097 回答
0

几个问题可以更好地理解您的问题。以 CrmService 为目标的 iframe 是否位于同一 IFD 服务器上?IFD 服务器是否与其他服务器位于同一域中?当您说用户已登录时,您是指本地域用户还是外部用户?

于 2009-04-24T01:19:54.537 回答