Ошибка ADFS при входе в систему поставщика услуг SAML

У меня есть проект Spring SAML, который разрабатывался около месяца. Я интегрирован с ADFS, и все работает хорошо. Я получаю периодически возникающую ошибку, которая становится проблематичной, потому что мне приходится ждать, пока она, по-видимому, не решит снова начать работать. Теперь ошибка отображается чаще, чем работает. Я вижу эту ошибку после выполнения входа в систему с любым количеством тестовых учетных записей AD.

Код ошибки 111 в журнале событий

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)....

Ошибка 364 в журнале событий ADFS

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)....

Конфигурация поставщика услуг, AD, ADFS, сертификатов и утверждений SAML правильная. По крайней мере, они работают в 90% случаев, когда я не получаю эту ошибку.

То, что я пробовал, пока не получилось, не помогло

  1. Перезапуск службы ADFS и виртуального сервера
  2. Синхронизируя время прокси-сервера (не уверен, что это означает точно, нашел документ MS, который предложил это для типов ошибок 111 и 364) В powershell w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /update
  3. Две статьи StackOverflow, относящиеся к этому, показали ошибку в метаданных подтверждения, и что SHA-256 не поддерживается. Я подтвердил свои метаданные и использую SHA-1.
  4. Я не могу найти ни одной статьи, непосредственно связанной с этой проблемой, ни на одном сайте поддержки Microsoft, однако я новичок в решении этой проблемы и, возможно, просто не знаю, где искать.

На данный момент, он работает в течение нескольких минут каждые несколько часов, а затем не работает в остальное время.

Я действительно озадачен, и любые предложения о способах устранения этой проблемы будут с благодарностью.

ОБНОВЛЕНИЕ Я не могу войти в ADFS изначально, что дополнительно указывает мне, что это не проблема с поставщиком услуг, а с самой ADFS/AD.

1 ответ

Решение

Основываясь на предложениях администратора Windows, я сделал следующее, что решило проблему.

  1. Гарантированный сервис W32Time использовал NTP (это не было)
  2. Убедитесь, что все обновления были установлены (они были)
  3. Убедитесь, что все службы работают под учетной записью службы, а не с учетной записью контроллера домена (они не были)
  4. Убедившись, что ADFS работала под учетной записью службы, заново создайте поставщика услуг

В этот момент ошибка возникала только для подмножества пользователей AD. На этих пользователей я сбросил их пароли, что затем решило проблему.

Хотя я не совсем уверен, почему это начало происходить или как эти шаги исправили это, моя теория состоит в том, что неиспользование одной учетной записи службы для управления всеми этими данными приводит к записи файлов, которые не могут быть прочитаны процессами, выполняющимися под другой учетной записью.,

Надеюсь, это кому-нибудь поможет.

Обновить:

Другая возможная причина ошибки - если вы измените имя участника-пользователя в Active Directory на строку, содержащую пробел, эта ошибка появится.

Другие вопросы по тегам