我已经根据创建了一个 ADFS 服务器technet 上的指南。但是,当尝试使用本指南的后半部分在 technet 上,该过程失败。
PS > Import-Module ADFS
PS > $serviceAccountCredential = Get-Credential -Message "Enter the credential for the Federation Service Account."
PS > Add-AdfsFarmNode `
>> -CertificateThumbprint:"REDACTED" `
>> -OverwriteConfiguration:$true `
>> -PrimaryComputerName:"awsfed01.ad.redacted.com" `
>> -ServiceAccountCredential:$serviceAccountCredential
>>
Add-AdfsFarmNode : MSIS7711: PolicyOperationFault
At line:1 char:1
+ Add-AdfsFarmNode `
+ ~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Add-AdfsFarmNode], FaultException
+ FullyQualifiedErrorId : DeploymentTask,Microsoft.IdentityServer.Deployment.Commands.JoinFarmCommand
Message Context Status
------- ------- ------
Unable to synchronize local database... DeploymentTask Error
我尝试配置的服务器的事件日志中每五分钟就会出现一次以下错误:
来源:AD FS,事件 ID 344:
There was an error doing synchronization. Synchronization of data from the primary federation server to a secondary federation server did not occur.
来源:AD FS,事件 ID 345:
There was a communication error during AD FS configuration database synchronization. Synchronization of data from the primary federation server to a secondary federation server did not occur.
Additional Data
Master Name : awsfed01.ad.redacted.com
Endpoint Uri : http://awsfed01.ad.redacted.com/adfs/services/policystoretransfer
Exception details:
System.ServiceModel.Security.SecurityNegotiationException: The caller was not authenticated by the service. ---> System.ServiceModel.FaultException: The request for security token could not be satisfied because authentication failed.
at System.ServiceModel.Security.SecurityUtils.ThrowIfNegotiationFault(Message message, EndpointAddress target)
at System.ServiceModel.Security.SspiNegotiationTokenProvider.GetNextOutgoingMessageBody(Message incomingMessage, SspiNegotiationTokenProviderState sspiState)
每次辅助服务器尝试连接时,主 ADFS 服务器的安全审计日志都会包含以下详细信息:
An account failed to log on.
Subject:
Security ID: NULL SID
Account Name: -
Account Domain: -
Logon ID: 0x0
Logon Type: 3
Account For Which Logon Failed:
Security ID: NULL SID
Account Name: msa-adfs$
Account Domain: RDC
Failure Information:
Failure Reason: An Error occured during Logon.
Status: 0x80090302
Sub Status: 0xC0000418
Process Information:
Caller Process ID: 0x0
Caller Process Name: -
Network Information:
Workstation Name: AWSFED20
Source Network Address: -
Source Port: -
Detailed Authentication Information:
Logon Process: NtLmSsp
Authentication Package: NTLM
Transited Services: -
Package Name (NTLM only): -
Key Length: 0
环境详细信息
- 我正在使用带有 ADFS 3.0 的 Windows Server 2012 R2
- 我的域名是ad.redacted.com(或者零售价\)此外,我redacted.com和redacted.co.uk作为 UPN。
- 我正在使用 WID 数据库,而不是外部 SQL 服务器。
- 我使用手动创建的 gMSA 服务帐户作为我的主要 ADFS 安装,名为RDC\msa-adfs$- 尝试配置辅助 ADFS 服务器时使用同一个帐户。我根据互联网上的各种来源将其 SPN 配置为以下内容:
- 主机/adfs.ad.redacted.com
- http/adfs
- 主机/adfs.ad.redacted.com
- http/adfs
- 主 ADFS 服务器的名称是awsfed01.ad.redacted.com
- 我正在尝试配置的辅助 ADFS 服务器名称是awsfed02.ad.redacted.com
- 有一个 DNS CNAME 记录adfs.ad.redacted.com指向awsfed01.ad.redacted.com
- 我使用了由外部 CA 签名的 SSL 证书,adfs.ad.redacted.com作为主域,以及以下主题备用名称:
- adfs.ad.redacted.com
- enterpriseregistration.ad.redacted.com
- enterpriseregistration.redacted.com
- enterpriseregistration.redacted.co.uk
- 两个 ADFS 服务器均配置为启用 Windows 防火墙,但网络配置为允许它们之间的所有流量
我尝试从空白服务器多次配置此功能。每次,辅助 ADFS 服务器都会以相同的方式失败并显示相同的错误消息。
更新:使用 PowerShell 重现
为了尝试尽可能可靠地重现此过程,我重新创建了我使用 PowerShell 所做的事情。
先决条件:* 域控制器awsdc01对于域名ad.redacted.com又名零售价\ * 两个联合服务器:awsfed10,awsfed20在一个名为ADFS 服务器
在 awsdc01 上:
New-ADServiceAccount -Name msa-adfs `
-DNSHostName adfs.ad.redacted.com `
-PrincipalsAllowedToRetrieveManagedPassword "ADFS Servers"
-ServicePrincipalNames "http/adfs.ad.redacted.com"
执行成功。
在 awsfed10 上:
Install-WindowsFeature adfs-federation –IncludeManagementTools
Add-WindowsFeature RSAT-AD-PowerShell
$password = ConvertTo-SecureString -String "Redacted" -Force -AsPlainText
Import-PfxCertificate -FilePath C:\files\cert.pfx cert:\localMachine\my -Password $password
Import-Module ActiveDirectory
Import-Module ADFS
Install-ADServiceAccount msa-adfs
Install-AdfsFarm -CertificateThumbprint:"XXX" -FederationServiceName:"adfs.ad.redacted.com" -GroupServiceAccountIdentifier RDC\msa-adfs$
Initialize-ADDeviceRegistration -ServiceAccountName RDC\msa-adfs$
Enable-AdfsDeviceRegistration
全部执行成功。
在 awsfed20 上:
Install-WindowsFeature adfs-federation –IncludeManagementTools
Add-WindowsFeature RSAT-AD-PowerShell
$password = ConvertTo-SecureString -String "Redacted" -Force -AsPlainText
Import-PfxCertificate -FilePath C:\files\cert.pfx cert:\localMachine\my -Password $password
Import-Module ActiveDirectory
Import-Module ADFS
Install-ADServiceAccount msa-adfs
Install-AdfsFarm -CertificateThumbprint:"XXX" -PrimaryComputerName:"awsfed10.ad.redacted.com" -GroupServiceAccountIdentifier RDC\msa-adfs$
失败,错误与上述相同。
答案1
必须根据 FederationServiceName 参数使用主机 SPN(而非 http)创建 GMSA。因此,如果您使用 adfs.ad.redacted.com,则 SPN 将为 host/adfs.ad.redacted.com。
您不应使用 CNAME 条目将 adfs.ad.redacted.com 指向单个服务器。这将导致 Kerberos 身份验证问题,如https://blogs.technet.microsoft.com/askds/2009/06/22/internet-explorer-behaviors-with-kerberos-authentication/场景 2。
我假设您正在使用某种负载平衡。因此,adfs.ad.redacted.com 应该解析为位于 AD FS 场节点前面的负载平衡器的虚拟 IP。
NTLM 阻止功能正在使用吗?因为看起来是这样。https://blogs.technet.microsoft.com/askds/2009/10/08/ntlm-blocking-and-you-application-analysis-and-auditing-methodologies-in-windows-7/有更多关于 NTLM 阻止的详细信息。
现在只需使用 NTLM 审核(不要阻止),然后按照之前的建议更正配置后重试添加第二个节点。
如果您仍然遇到问题,我建议向 Microsoft 提出支持案例。
答案2
如果有人像我一样遇到这种情况,那是因为本地防火墙已禁用同步,并且通过 MS 特定电子邮件,我们禁用了 NTLM 代理,因此我们启用它进行同步,然后再次禁用。