Então tínhamos o ADFS Proxy conectado ao ADFS (Install-WebApplicationProxy), ambos Windows Server 2019. Tive que restabelecer a confiança, mas ele espera muito tempo, tentando novamente a autenticação
Logs de eventos do AD FS
O ADFS Side possui o evento 276 com valores estranhos:
O proxy do servidor de federação não conseguiu autenticar-se no Serviço de Federação. Ação do Usuário Certifique-se de que o proxy seja confiável para o Serviço de Federação. Para fazer isso, faça logon no computador proxy com o nome do host identificado no nome da entidade do certificado e restabeleça a confiança entre o proxy e o Serviço de Federação usando o cmdlet Install-WebApplicationProxy.
Dados Adicionais
Detalhes do certificado:
Nome do assunto: Impressão digital:
Não antes do tempo:
Não depois do tempo:
Há muitos desses eventos à medida que cada proxy de aproximadamente 20 segundos tenta novamente a autenticação. Porém o primeiro evento gerado após Install-WebApplicationProxy é 395:
A confiança entre o proxy do servidor de federação e o Serviço de Federação foi estabelecida com êxito usando a conta 'exemplo\administrador'.
Assunto do certificado de confiança do proxy: CN=ADFS ProxyTrust - ADFSproxy. Impressão digital do certificado de confiança do proxy: 3F5DBD1C735A57C5FEA8C18905EE83CEAE3EA732 Obviamente, minhas credenciais estão corretas, o certificado pode ser entregue ao ADFS. Eu validei usando certlm.msc - o certificado está em AdfsTrustedDevices
Registros do SChannel
Vejo o seguinte evento em ambos, ADFS e ADFS Proxy:
Evento 36867:
Criando uma credencial de cliente TLS.
No entanto, para o proxy ADFS também há avisos, ID de evento 36857:
O servidor remoto solicitou autenticação de cliente TLS, mas nenhum certificado de cliente adequado foi encontrado. Uma conexão anônima será tentada. Esta solicitação de conexão TLS pode ser bem-sucedida ou falhar, dependendo das configurações de política do servidor.
Rastreamento do AD FS
Log de depuração ativado.
ADFS:
Erros múltiplos do evento 107:
ProxyRequestHandler.DefaultExceptionHandler: ProxyTrust não pôde ser verificado para certificado com nome de assunto '' e impressão digital ''.
Detalhes da exceção: Exceção: Nenhum certificado de cliente associado à solicitação foi encontrado. StackTrace: em Microsoft.IdentityServer.Web.Proxy.TlsRequestVerificationMethod.VerifyTrustedRequest (contexto WrappedHttpListenerContext, String e auditInformation) em Microsoft.IdentityServer.Web.Rest.RestRequestHandler.OnGetContext (contexto WrappedHttpListenerContext)
Erro ao recuperar a configuração do proxy. Microsoft.IdentityServer.WebHost.Proxy.ProxyTrustException: Nenhum certificado de cliente associado à solicitação foi encontrado. em Microsoft.IdentityServer.Web.Proxy.TlsRequestVerificationMethod.VerifyTrustedRequest (contexto WrappedHttpListenerContext, String e auditInformation) em Microsoft.IdentityServer.Web.Rest.RestRequestHandler.OnGetContext (contexto WrappedHttpListenerContext)
TlsRequestVerificationMethod: a solicitação recebida não continha um certificado.
Proxy ADFS.
Evento 54:
Found certificate matching thumbprint '3F5DBD1C735A57C5FEA8C18905EE83CEAE3EA732'
Erros do Evento 52:
Falha na solicitação de configuração com status:ProtocolError Mensagem: O servidor remoto retornou um erro: (401) Não autorizado. Exceção:System.Net.WebException: O servidor remoto retornou um erro: (401) Não autorizado. em System.Net.HttpWebRequest.GetResponse() em Microsoft.IdentityServer.Management.Proxy.StsConfigurationProvider.GetStsProxyConfiguration(X509Certificate2 trustCert)
Coisas aleatórias tentadas
- TLS1.3 desativado (não que isso seja uma coisa em 2019) https://jaapwesselius.com/2022/01/19/adfs-web-application-proxy-configuration-wizard-fails-with-trust-certificate-error/
- Habilitado TLS 1.0, 1.1 (anteriormente apenas 1.2 era configurado)
- Faltavam chaves de registro do .NET para ativar criptografia forte. Adicionado. + Definir TLS 1.2 padrão
- Defina o protocolo padrão winHTTP para TLS1.2 usando o registro
- Obteve o CU 2024-03 mais recente em ambos os servidores
- Verificado se o certificado gerado no adfsproxy possui permissões de leitura de chave privada para contas de serviço adfssrv, appproxyctrl e appproxysvc.
Resumindo, o certificado é entregue ao ADFS, mas a autenticação do cliente falha.
Não conheço muitos detalhes internos do ADFS Proxy/Web Application Proxy - espero que haja alguém que possa me orientar sobre como solucionar isso. Agora devemos suportar algum tempo de inatividade :(
PS: Se alguém recomendar o restabelecimento da confiança - ESTOU tentando fazer isso. Esses eventos são gerados como parte desse processo. Falha com: Ocorreu um erro ao tentar recuperar dados de configuração do Federation Server. Não foi possível recuperar o pro...
PPS Poderia ser alguma configuração que impede que os certificados dentro do AdfsTrustedDevices sejam usados para autenticação do cliente? O certificado PS ADFS ProxyTrust - ADFSproxy
não tem nenhum uso de chave aprimorado - mas verifiquei com outro servidor proxy que estava funcionando, mas também não. Como ele confia neste certificado autoassinado? O ADFS confia implicitamente em certificados autoassinados em AdfsTrustedDevices?
Parece que o ADFS está usando algo chamado SendTrustedIssuerList: gerenciamento de emissores confiáveis para autenticação de cliente e usando AdfsTrustedDevices para confiar no certificado de autenticação de cliente do servidor proxy adfs.
Não foi possível confiar nesse certificado porque removi manualmente a ligação hostnameport=adfs.example.com:443 e adicionei novamente sem parâmetro
sslctlstorename=AdfsTrustedDevices
.Eu precisei:
netsh http delete sslcert hostnameport=adfs.example.com:443
netsh http add sslcert hostnameport=adfs.example.com:443 certhash=<thumb> appid={5d89a20c-beab-4389-9447-324788eb944a} certstorename=MY ccs=AdfsTrustedDevices
Lição aprendida: se a renovação do certificado do console de gerenciamento do AD FS não vincular novamente o certificado,
use netsh http update sslcert