添加辅助 ADFS 服务器时出现安全错误

添加辅助 ADFS 服务器时出现安全错误

我已经根据创建了一个 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.comredacted.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又名零售价\ * 两个联合服务器:awsfed10awsfed20在一个名为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 代理,因此我们启用它进行同步,然后再次禁用。

相关内容