0

我有一个关于 IIS 配置的问题,所以至少我认为。

我有两台不同的服务器,其中一台安装了 Microsoft Dynamics CRM 2011,第二台服务器上安装了与 Microsoft Dynamics CRM 2011 Web 服务对话的 ASP.NET 应用程序。问题就在那里,我无法配置 ASP.NET 应用程序。

应用程序需要在以下方面工作:

  1. 我打开启用 Windows 授权的 ASP.NET 应用程序
  2. 我使用 Active Directory 用户登录,该用户同时是 Dynamics CRM 2011 系统中的用户
  3. 当我登录时,应用程序开始使用与我登录时相同的凭据向 Dynamics CRM Web 服务发送请求

现在我的配置是——启用 Windows 授权,启用 ASP.NET 模拟,应用程序池作为网络服务运行。

问题是,当我通过地址 localhost 在 ASP.NET 服务器上打开此应用程序时,他们会自动获取我登录到此服务器的凭据,这没关系,但是当我尝试通过地址 some-hostname.com 打开应用程序时,他们需要登录,这也可以,但是当我登录并且应用程序开始向 Dynamics CRM Web 服务发送请求时。CRM Web 服务响应 401 未授权,由此推断来自 IIS 的凭据存在问题。

我尝试在托管 CRM 服务器的同一台服务器上安装和配置此 ASP.NET 应用程序,一切正常。

4

2 回答 2

0

要让 ASP.NET 应用程序模拟登录用户,尤其是来自完全限定域名的用户,您需要配置两件事。

  1. ASP.NET 应用程序的应用程序池标识。这是作为网络服务运行还是作为特定用户运行?运行应用程序的身份必须“启用委派”。这是该用户帐户在 Active Directory 中的一个选项。如果您的应用程序作为网络服务运行,您需要在 AD 中的计算机帐户而不是用户帐户上启用委派。

  2. 应用程序域的 SPN(服务主体名称)。SPN 有点像用于身份验证的 DNS,并且是模拟所必需的。如果您只是使用机器名称(例如http://server/app)并且您使用网络服务作为身份,则不需要配置 SPN,因为默认情况下会在服务器加入 Active Directory 时为您设置一个。但是,如果您为 ASP.NET 身份使用特定的用户帐户,或者您希望您的用户使用完全限定的域名(例如http://www.server.com),则您需要将此告知 Active Directory,并且您使用 SPN 来执行此操作。您的 Active Directory 管理员应该熟悉 SPN 和 setspn.exe 命令。

请注意,您可能还需要为您的 CRM 服务器添加一个 SPN,因为它也只是另一个 ASP.NET 应用程序。如果您的内部 CRM 站点使用用户帐户作为身份,或者您使用完全限定的域名访问内部 CRM,您应该只需要这样做,就像您的自定义 ASP.NET 应用程序一样。

希望有帮助!

于 2013-10-16T20:45:23.537 回答
0

你看到的是双跳限制。

除非您配置委派,否则客户端的凭据无法从您的 ASP.NET 应用程序 Web 服务器转发到 CRM 服务器。为此,您的 AD 必须已设置为进行 Kerberos 身份验证。

您的代码将尝试使用应用程序池身份连接到 CRM。您可以将其配置为 CRM 中的用户,然后通过将代理上的 CallerID 设置为发起用户的 guid 来使用 CRM 模拟(与 Kerberos 或 AD 无关)(您必须调用 CRM 才能获得这个)。SDK 文档中提供了有关如何执行此操作的信息。

于 2013-10-16T20:42:23.177 回答