繁体   English   中英

ADFS-证书不是唯一的

[英]ADFS - Certificate not unique

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

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

我不确定如何解决此问题。

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

我对以下语句感到有些困惑:“需要注意的是,几乎所有这些应用程序都是SAML2,而不是ADFS。” 您是说“必须注意,几乎所有这些应用程序都是SAML2而不是WS-Fed”吗?

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

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

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

通过将汇总3应用到ADFS 2.0中,可以解决此问题( http://support.microsoft.com/kb/2790338

它列出了已知问题和修补程序。 对于Salesforce,我们遇到以下问题(在汇总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 Server:

如果将SQL Server数据库用作AD FS 2.0配置数据库,则必须针对SQL Server数据库下载并执行RelaxedRequestSigningCertsv2.sql脚本。

若要执行此脚本,请使用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.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM