我正在尝试在同一台服务器 (Windows Server 2012 R2) 上安装带有 IFD (面向 Internet 的部署) 和 ADFS 的 Microsoft Dynamics CRM 2016
ADFS 正在运行,似乎运行良好。我可以在https://sts.mydomain.com/FederationMetadata/2007-06/FederationMetadata.xml
我已将 Dynamics CRM IFD 配置为使用以下设置:
Web 应用程序服务器域:我的域名
组织 Web 服务域:我的域名
发现 Web 服务域:discovery.mydomain.com
面向 Internet 的服务器所在的外部域:auth.mydomain.com
问题始于尝试在 ADFS 上设置依赖方信任。
当使用地址https://auth.mydomain.com/FederationMetadata/2007-06/FederationMetadata.xml作为联合元数据地址,它获取的是错误的元数据。
它获取的是 ADFS 元数据,而不是 CRM 元数据。
实现此功能的唯一方法是为 CRM 端点设置不同的端口,例如将 :444 附加到 CRM IFD 设置。
此配置的问题在于,它将为 Dynamics CRM 网站使用非标准 HTTPS 端口 444,并且在身份验证阶段使用 auth.mydomain.com:444
有没有办法让 ADFS 和 Dynamics CRM 同时在端口 443 上的 HTTPS 上运行?
答案1
尝试调整 URL 预留,但没有成功。
尝试再次将另一个 IP 添加到网络接口,但没有成功。ADFS
似乎总是尝试绑定到 0.0.0.0,而不是特定 IP。如果没有预留,则 ADFS 根本不会绑定。
我也尝试了 Thomas 的建议,但 ADFS 总是先捕获请求。(因为 URL 保留)
我通过让 Dynamics CRM 在另一个 URL 路径上提供其元数据来使其工作。
基本上,我认为我可以使用 URL 重写规则来实现这一点。
当我在 Dynamics CRM web.config 上发现这一点时,我正要创建一个新规则
<rule name="FederationMetadataRule" stopProcessing="true">
<match url="FederationMetadata/2007-06/FederationMetadata.xml" />
<action type="Rewrite" url="/Handlers/FederationMetadata.ashx" />
</rule>
默认路径:C:\Program Files\Microsoft Dynamics CRM\CRMWeb\web.config
您只需要将 URL 更改为 FederationMetadata 以外的其他内容,例如:
<rule name="FederationMetadataRule" stopProcessing="true">
<match url="FederationMetadataCrm/2007-06/FederationMetadata.xml" />
<action type="Rewrite" url="/Handlers/FederationMetadata.ashx" />
</rule>
完成此更改后,您可以使用 URL 添加依赖方信任 https://auth.mydomain.com/FederationMetadataCrm/2007-06/FederationMetadata.xml
另一个选择是使用 url 添加它https://auth.mydomain.com/Handlers/FederationMetadata.ashx
对于前者,您需要确保在更新 Dynamics CRM 时更改能够持续存在。
后者似乎更好,因为您不需要修改 web.config,并且只要 Microsoft 不记得更改处理程序名称及其位置即可。
无论哪种方式,最好在更新 Dynamics CRM 后进行检查。
现在一切都在端口 443 上运行。