此问题可以通过为 ADFS 2.0 ( http://support.microsoft.com/kb/2790338 )应用汇总 3 来解决
它列出了已知问题和 Hot Fix。具体到 Salesforce ,我们得到以下问题(在 Rollup 3 中描述);
一些依赖方要求将签名证书应用于 SAML 请求的依赖方,因为签名证书提供了关键的安全验证功能并且在 SAML 2.0 规范中进行了定义。AD FS 2.0 能够允许将唯一签名证书应用于依赖方信任,但它只允许将相同的证书应用于每个 AD FS 2.0 场的一个依赖方信任。此限制可防止多个依赖方对 SAML 请求使用相同的签名证书。AD FS 2.0 更新汇总 3 删除了此限制,并允许多个依赖方对 SAML 请求使用相同的签名证书。
注意:应用更新汇总 3 后,您需要手动运行脚本(如下所述)以修复此问题。
窗口内部数据库:
对于问题 3,此修补程序将名为“ PostReleaseSchemaChanges.ps1
”的 PowerShell 脚本安装到“ %program files%\active directory federation services\sql
”文件夹中。
如果您使用 Windows 内部数据库 (WID) 作为 AD FS 2.0 配置数据库,则在应用此修补程序后,您必须首先在场中的辅助联合服务器上手动执行 PostReleaseSchemaChanges.ps1 PowerShell 脚本,然后在主联合服务器。
注意:您可能会遇到错误“在此系统上禁用了脚本的执行”。为了克服这个问题,您可以尝试在 powershell 中运行以下命令(适用于 Windows Server 2008 R2):
Set-ExecutionPolicy RemoteSigned
如果您仍然遇到此问题,请参阅下面的 StackOverflow 帖子:
PowerShell 说“在此系统上禁用脚本执行”。
SQL 服务器:
如果您使用 SQL Server 数据库作为 AD FS 2.0 配置数据库,则必须下载并RelaxedRequestSigningCertsv2.sql
针对 SQL Server 数据库执行脚本。
要执行此脚本,请使用 Sqlcmd 实用程序运行以下 cmdlet:Sqlcmd -S -i RelaxedRequestSigningCertsv2.sql 或者,按照以下步骤使用 SQL Server Management Studio 运行 cmdlet:
Connect to the SQL Server database that has the AD FS 2.0 configuration database.
Create a new SQL query.
Paste the contents of the RelaxedRequestSigningCertsv2.sql file into the query, and then execute the query.