Я не знаю, видел ли кто-нибудь эту проблему или есть какие-нибудь идеи?
Недавно мы перенесли 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 :
Похоже, у вас возникла проблема в https://blogs.technet.microsoft.com/pie/2016/10/23/adfs-2016-cannot-addupdate-relying-party-from-the-gui-from-metadata-files/
У меня тоже была эта проблема, пока я не обнаружил, что настройки TLS между двумя системами конфликтуют. Сервер, на котором размещены метаданные, был настроен на использование только TLS 1.2, в то время как сервер ADFS, работающий на Windows Server 2016, был настроен на настройки TLS по умолчанию. Когда я изменил сервер ADFS на использование только TLS 1.2, проблема была решена.