Назад | Перейти на главную страницу

Ошибка ADFS после обновления с ADFS 2.1 до 4.0

Я не знаю, видел ли кто-нибудь эту проблему или есть какие-нибудь идеи?

Недавно мы перенесли ADFS с ADFS 2.1 на W2008r2 на ADFS 4.0 на W2016.

Базовые функции кажутся нормальными, но я вижу проблему с обновлением метаданных федерации со всеми моими доверительными отношениями проверяющей стороны; попытка щелкнуть правой кнопкой мыши и выбрать «Обновить из метаданных федерации ...» (или перейти к свойствам, мониторингу, тесту URL-адреса) дает следующую ошибку:

"An error occurred during an attempt to read the federation metadata. Verify that the specified URL or host name is a valid metadata endpoint".

Связанное сообщение об ошибке

Method not found: 'Microsoft.identitymodel.protocols.WSFederation.Metadata.MetadataBase Microsoft.Identity.Model.Protocols.WSFederation.Metadata.MetadataSerializer.ReadMetadata(System.IO.Stream)'.

Прокси-сервер не требуется, и прокси-сервер не определен. Я могу просто перейти к URL-адресу метаданных федерации в IE на сервере ADFS и получить ожидаемую страницу XML. Я проверил, правильно ли определены сертификаты, что учетная запись службы ADFS имеет доступ для чтения к ним и т. Д.

Сообщения об ошибках в журнале событий отсутствуют ни при запуске службы, ни при попытке проверить / обновить метаданные. Попытка добавить новое доверие проверяющей стороны дает ту же ошибку.

Я запустил диагностику ADFS, и test-adfsserverhealth выдает ошибку, которую я считаю ключевой, но я не знаю, что делать дальше.

Name             : PingFederationMetadata
Result           : Fail
Detail           : System.Net.WebException: The underlying connection was closed: An unexpected error occurred on a
                   send. ---> System.IO.IOException: Unable to read data from the transport connection: An existing
                   connection was forcibly closed by the remote host. ---> System.Net.Sockets.SocketException: An
                   existing connection was forcibly closed by the remote host
                      at System.Net.Sockets.Socket.Receive(Byte[] buffer, Int32 offset, Int32 size, SocketFlags
                   socketFlags)
                      at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
                      --- End of inner exception stack trace ---
                      at System.Net.Sockets.NetworkStream.Read(Byte[] buffer, Int32 offset, Int32 size)
                      at System.Net.FixedSizeReader.ReadPacket(Byte[] buffer, Int32 offset, Int32 count)
                      at System.Net.Security.SslState.StartReceiveBlob(Byte[] buffer, AsyncProtocolRequest
                   asyncRequest)
                      at System.Net.Security.SslState.ForceAuthentication(Boolean receiveFirst, Byte[] buffer,
                   AsyncProtocolRequest asyncRequest)
                      at System.Net.Security.SslState.ProcessAuthentication(LazyAsyncResult lazyResult)
                      at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext,
                   ContextCallback callback, Object state, Boolean preserveSyncCtx)
                      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback
                   callback, Object state, Boolean preserveSyncCtx)
                      at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback
                   callback, Object state)
                      at System.Net.TlsStream.ProcessAuthentication(LazyAsyncResult result)
                      at System.Net.TlsStream.Write(Byte[] buffer, Int32 offset, Int32 size)
                      at System.Net.ConnectStream.WriteHeaders(Boolean async)
                      --- End of inner exception stack trace ---
                      at System.Net.WebClient.DownloadDataInternal(Uri address, WebRequest& request)
                      at System.Net.WebClient.DownloadData(Uri address)
                      at CallSite.Target(Closure , CallSite , Object , Object )
Output           : {PingFedmetadataException}
ExceptionMessage : 

У меня тоже была эта проблема, пока я не обнаружил, что настройки TLS между двумя системами конфликтуют. Сервер, на котором размещены метаданные, был настроен на использование только TLS 1.2, в то время как сервер ADFS, работающий на Windows Server 2016, был настроен на настройки TLS по умолчанию. Когда я изменил сервер ADFS на использование только TLS 1.2, проблема была решена.