Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/opengl/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows ADFS-证书不唯一_Windows_Adfs_Federation - Fatal编程技术网

Windows ADFS-证书不唯一

Windows ADFS-证书不唯一,windows,adfs,federation,Windows,Adfs,Federation,我创建了几个使用SAML2身份验证的应用程序。这些应用程序(包括SalesForce)通常共享同一域(即:reports.application.com、portal.application.com等),但不是单个应用程序的一部分,甚至不在同一堆栈上。有些子域导致SalesForce,有些子域导致其他应用程序 问题是ADFS报告“证书不唯一”,并拒绝允许应用程序在ADFS数据库中注册,因为证书相同。这对于SalesForce来说尤其麻烦 我不知道如何解决这个问题 编辑:请务必注意,几乎所有这些应

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

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

我不知道如何解决这个问题


编辑:请务必注意,几乎所有这些应用程序都是SAML2而不是ADF。

我对“请务必注意,几乎所有这些应用程序都是SAML2而不是ADF”这句话有点困惑。您的意思是“请务必注意,几乎所有这些应用程序都是SAML2而不是WS-Fed”

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

为什么这些申请有证书?是因为请求已签名还是SLO已签名


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

此问题可以通过应用ADFS 2.0()的汇总3来解决

它列出了已知问题和热修复程序。具体到Salesforce,我们会遇到以下问题(如汇总3所述)

一些依赖方要求应用签名证书 向依赖方发送SAML请求,作为签名证书 提供关键的安全验证功能,并在 SAML2.0规范。AD FS 2.0能够允许 要应用于依赖方信任的签名证书,但 仅允许将同一证书应用于一个依赖方 每个AD FS 2.0服务器场的信任。此限制可防止多重依赖 各方不得对SAML请求使用相同的签名证书。公元 FS 2.0更新汇总3取消了此限制并允许多个 依赖方对SAML请求使用相同的签名证书

注意:应用update rollup 3后,您需要手动运行脚本(如下所述)来修复此问题。

窗口内部数据库:

Set-ExecutionPolicy RemoteSigned
对于问题3,此修补程序将名为“
PostReleaseSchemaChanges.ps1
”的PowerShell脚本安装到“
%program files%\active directory联合身份验证服务\sql
”文件夹中

如果使用Windows内部数据库(WID)作为AD FS 2.0配置数据库,则在应用此修补程序后,必须首先在服务器场中的辅助联合服务器上手动执行PostReleaseSchemaChanges.ps1 PowerShell脚本,然后在主联合服务器上手动执行

注意:您可能会遇到错误“此系统上禁用了脚本的执行”。要克服此问题,您可以尝试在powershell(适用于Windows Server 2008 R2)中运行以下命令:

Set-ExecutionPolicy RemoteSigned
如果您仍然面临此问题,请参阅下面的StackOverflow post:

SQL Server:

Set-ExecutionPolicy RemoteSigned
如果您使用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.

是的,我的意思是。很抱歉有多种RPs使用几种不同的联合实现—simplesamlphp、SalesForce、SharePoint等。特别是SalesForce在与ADF一起使用时有点闪烁其词,元数据中的x509证书不是唯一的。可以通过删除证书来解决这个问题,但这种方法并不适用于所有应用程序。