0

我创建了几个使用 SAML2 身份验证的应用程序。这些应用程序(包括 SalesForce)通常共享相同的域(即:reports.application.com、portal.application.com 等),但不是单个应用程序的一部分,甚至不在同一个堆栈上。一些子域通向 SalesForce,一些子域通向其他应用程序。

问题是 ADFS 报告“证书不是唯一的”并拒绝允许应用程序在 ADFS 数据库中注册,因为证书相同。这对 SalesForce 来说尤其麻烦。

我不确定如何解决这个问题。

编辑:重要的是要注意几乎所有这些应用程序都是 SAML2 而不是 ADFS。

4

2 回答 2

0

此问题可以通过为 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.
于 2013-06-05T03:11:27.563 回答
0

我对“重要的是要注意几乎所有这些应用程序都是 SAML2 而不是 ADFS”的说法有些困惑。您的意思是“重要的是要注意几乎所有这些应用程序都是 SAML2 而不是 WS-Fed”?

这些应用程序如何通过 ADFS 进行身份验证?你有某种第三方堆栈吗?

为什么这些应用程序有证书?是因为请求已签名还是 SLO 已签名或什么?

如果某些应用程序实际上不需要证书,您可以将其从元数据中删除。

于 2012-12-19T23:39:08.500 回答