Ошибка 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% случаев, когда я не получаю эту ошибку.
То, что я пробовал, пока не получилось, не помогло
- Перезапуск службы ADFS и виртуального сервера
- Синхронизируя время прокси-сервера (не уверен, что это означает точно, нашел документ MS, который предложил это для типов ошибок 111 и 364) В powershell w32tm /config /manualpeerlist:pool.ntp.org /syncfromflags:manual /update
- Две статьи StackOverflow, относящиеся к этому, показали ошибку в метаданных подтверждения, и что SHA-256 не поддерживается. Я подтвердил свои метаданные и использую SHA-1.
- Я не могу найти ни одной статьи, непосредственно связанной с этой проблемой, ни на одном сайте поддержки Microsoft, однако я новичок в решении этой проблемы и, возможно, просто не знаю, где искать.
На данный момент, он работает в течение нескольких минут каждые несколько часов, а затем не работает в остальное время.
Я действительно озадачен, и любые предложения о способах устранения этой проблемы будут с благодарностью.
ОБНОВЛЕНИЕ Я не могу войти в ADFS изначально, что дополнительно указывает мне, что это не проблема с поставщиком услуг, а с самой ADFS/AD.
1 ответ
Основываясь на предложениях администратора Windows, я сделал следующее, что решило проблему.
- Гарантированный сервис W32Time использовал NTP (это не было)
- Убедитесь, что все обновления были установлены (они были)
- Убедитесь, что все службы работают под учетной записью службы, а не с учетной записью контроллера домена (они не были)
- Убедившись, что ADFS работала под учетной записью службы, заново создайте поставщика услуг
В этот момент ошибка возникала только для подмножества пользователей AD. На этих пользователей я сбросил их пароли, что затем решило проблему.
Хотя я не совсем уверен, почему это начало происходить или как эти шаги исправили это, моя теория состоит в том, что неиспользование одной учетной записи службы для управления всеми этими данными приводит к записи файлов, которые не могут быть прочитаны процессами, выполняющимися под другой учетной записью.,
Надеюсь, это кому-нибудь поможет.
Обновить:
Другая возможная причина ошибки - если вы измените имя участника-пользователя в Active Directory на строку, содержащую пробел, эта ошибка появится.