Erro do ADFS duing no login do provedor de serviços SAML

1

Eu tenho um projeto SAML Spring que está em desenvolvimento há cerca de um mês. Eu integrei o ADFS e tudo funcionou bem. Estou recebendo um erro intermitente que está se tornando problemático porque tenho que esperar que pareça decidir para começar a trabalhar novamente. Agora está mostrando o erro com mais frequência do que funciona. Eu vejo esse erro depois de realizar um login com qualquer número de contas do AD de teste.

Erro ID 111 no log de eventos

The Federation Service encountered an error while processing the WS-Trust request. 
Request type: http://schemas.microsoft.com/idfx/requesttype/issue 

Additional Data 
Exception details: 
System.ArgumentOutOfRangeException: Not a valid Win32 FileTime.
Parameter name: fileTime
   at System.DateTime.FromFileTimeUtc(Int64 fileTime)
   at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetPasswordExpiryDetails(SafeLsaReturnBufferHandle profileHandle, DateTime& nextPasswordChange, DateTime& lastPasswordChange)....

Erro 364 no log de eventos do AD FS

Encountered error during federation passive request. 

Additional Data 

Protocol Name: 
Saml 

Relying Party: 
https://localhost:8443/elsso/saml/metadata/alias/serviceprovider

Exception details: 
System.ArgumentOutOfRangeException: Not a valid Win32 FileTime.
Parameter name: fileTime
   at System.DateTime.FromFileTimeUtc(Int64 fileTime)
   at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetPasswordExpiryDetails(SafeLsaReturnBufferHandle profileHandle, DateTime& nextPasswordChange, DateTime& lastPasswordChange)
   at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetLsaLogonUserInfo(SafeHGlobalHandle pLogonInfo, Int32 logonInfoSize, DateTime& nextPasswordChange, DateTime& lastPasswordChange, String authenticationType, String issuerName)
   at Microsoft.IdentityServer.Service.Tokens.LsaLogonUserHelper.GetLsaLogonUser(UserNameSecurityToken token, DateTime& nextPasswordChange, DateTime& lastPasswordChange, String issuerName)....

A configuração do Service Provider, do AD, do ADFS, dos Certificados e das asserções SAML está correta. Pelo menos eles trabalham 90% do tempo quando não estou recebendo esse erro.

O que eu tentei enquanto falhei isso não ajudou

  1. Reiniciando o serviço ADFS e o servidor virtual
  2. Sincronizando os tempos do servidor proxy (não tenho certeza do que isso significa exatamente, localizei um documento do MS que sugeriu isso para os tipos de erros 111 e 364) No PowerShell w32tm / config /manualpeerlist:pool.ntp.org / syncfromflags: manual / update
  3. Os dois artigos StackOverflow relacionados a isso mostraram um erro nos metadados de asserção e que o SHA-256 não é suportado. Eu verifiquei meus metadados e estou usando o SHA-1.
  4. Não consigo encontrar nenhum artigo diretamente relacionado a esse problema em qualquer site de suporte da Microsoft. No entanto, sou novo em lidar com esse tipo de problema e talvez não saiba onde procurar.

A partir de agora, ele está trabalhando por alguns minutos em intervalos de algumas horas e, em seguida, falhando no restante do tempo.

Estou realmente perplexo e qualquer sugestão de como solucionar isso será muito apreciada.

UPDATE Eu não consigo acessar o ADFS nativamente, o que indica que não é um problema com o provedor de serviços, mas com o próprio ADFS / AD.

    
por blur0224 06.06.2016 / 18:31

1 resposta

1

Com base nas sugestões de um administrador do Windows, fiz o seguinte, o que resolveu o problema.

  1. Garantido que o serviço W32Time estava usando o NTP (não era)
  2. Garantir que todas as atualizações foram instaladas (eram)
  3. Verifique se todos os serviços estavam sendo executados em uma conta de serviço, não em uma conta de controlador de domínio (eles não estavam)
  4. Depois de certificar-se de que o ADFS estava sendo executado na conta de serviço, recrie o Provedor de serviços

Neste ponto, o erro estava ocorrendo apenas para um subconjunto de usuários do AD. Nesses usuários, eu redefini as senhas, que resolviam o problema.

Embora não tenha certeza absoluta de por que isso começou ou de como essas etapas o corrigiram, minha teoria é que não usar uma conta de serviço para gerenciar tudo isso fazia com que arquivos não pudessem ser lidos por processos executados em uma conta diferente.

Espero que isso ajude alguém.

Atualização:

Outra possível causa do erro é se você alterar o UPN no Active Directory para uma string contendo um espaço, esse erro será exibido.

    
por 07.06.2016 / 18:01