间歇Google OpenId:未找到OpenId端点(azure托管)

间歇Google OpenId:未找到OpenId端点(azure托管),azure,dotnetopenauth,google-openid,Azure,Dotnetopenauth,Google Openid,在过去的几个月里,我们已经看到我们在Azure云托管环境中可靠地找到Google OpenId端点的能力大幅下降。这曾经是一个问题,每个月只会出现一次,但在上个月,报告这一问题的用户数量急剧上升。我还注意到,这个问题在不同的部署中或多或少都很普遍。这意味着从特定azure服务器到google端点的通信存在间歇性问题 随着增长,我们为此添加了日志记录,结果如下: DEBUG 13 03 2014 20:35:42,598 [89]: HTTP GET https://www.google.com/

在过去的几个月里,我们已经看到我们在Azure云托管环境中可靠地找到Google OpenId端点的能力大幅下降。这曾经是一个问题,每个月只会出现一次,但在上个月,报告这一问题的用户数量急剧上升。我还注意到,这个问题在不同的部署中或多或少都很普遍。这意味着从特定azure服务器到google端点的通信存在间歇性问题

随着增长,我们为此添加了日志记录,结果如下:

DEBUG 13 03 2014 20:35:42,598 [89]: HTTP GET https://www.google.com/accounts/o8/id
DEBUG 13 03 2014 20:35:42,723 [89]: An Error event occurred in Test AuthenticationService at 3/13/2014 8:35:42 PM.

  Client IP: 75.151.81.33
  Client Host: NT AUTHORITY\SYSTEM
  Server Host: 10.28.174.102:443
  Details:
====================

    Error in openid popup request authentication, DotNetOpenAuth.Messaging.ProtocolException: No OpenID endpoint found. ---> System.InvalidOperationException: Sequence contains no elements
        at System.Linq.Enumerable.First[TSource](IEnumerable`1 source)
        at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.CreateRequest(Identifier userSuppliedIdentifier, Realm realm, Uri returnToUrl)
        --- End of inner exception stack trace ---
        at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.CreateRequest(Identifier userSuppliedIdentifier, Realm realm, Uri returnToUrl)
        at Website.Controllers.OpenIdController.GetProviderRequest(OpenIdProvider provider, String platform, Boolean isNewAccount) in c:\src-r\Website\Controllers\OpenIdController.cs:line 152

ERROR 13 03 2014 20:35:42,723 [89]: 
    Error while performing discovery on: "https://www.google.com/accounts/o8/id": DotNetOpenAuth.Messaging.ProtocolException: Error occurred while sending a direct message or getting the response. ---> 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.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.StartSendBlob(Byte[] incoming, Int32 count, 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.PooledStream.Write(Byte[] buffer, Int32 offset, Int32 size)
        at System.Net.ConnectStream.WriteHeaders(Boolean async)
        --- End of inner exception stack trace ---
        at System.Net.HttpWebRequest.GetResponse()
        at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
        --- End of inner exception stack trace ---
        at DotNetOpenAuth.Messaging.StandardWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
        at DotNetOpenAuth.Messaging.UntrustedWebRequestHandler.GetResponse(HttpWebRequest request, DirectWebRequestOptions options)
        at DotNetOpenAuth.Yadis.Yadis.Request(IDirectWebRequestHandler requestHandler, Uri uri, Boolean requireSsl, String[] acceptTypes)
        at DotNetOpenAuth.Yadis.Yadis.Discover(IDirectWebRequestHandler requestHandler, UriIdentifier uri, Boolean requireSsl)
        at DotNetOpenAuth.OpenId.UriDiscoveryService.Discover(Identifier identifier, IDirectWebRequestHandler requestHandler, Boolean& abortDiscoveryChain)
        at DotNetOpenAuth.OpenId.RelyingParty.OpenIdRelyingParty.Discover(Identifier identifier)
        at DotNetOpenAuth.OpenId.RelyingParty.AuthenticationRequest.Create(Identifier userSuppliedIdentifier, OpenIdRelyingParty relyingParty, Realm realm, Uri returnToUrl, Boolean createNewAssociationsAsNeeded)
我认为这可能是一个超时问题,所以我尝试增加untrustedWebRequest的超时(没有效果)


我们认为可能存在时间问题,因此我们将实例重新同步到time.nist.gov(无效)

我确实遇到过关于谷歌集团的讨论:


尽管还没有找到答案。

我面临着完全相同的问题。你可以看看PostID,虽然它不是问题的答案,但是从OpenID2.0迁移到OpenIDConnect和GoogleOAuth2.0似乎已经解决了我们的问题。我不相信它刚刚开始,还需要更多的时间和数据。@kkychuck OpenId connect解决了你的问题吗?我们有完全相同的问题。谢谢@NullReference这已经有一个多月了,我相信一旦我们通过谷歌的OAuth 2.0升级到OpenId Connect,我们就不会再收到关于这个问题的报告了。
<untrustedWebRequest timeout="00:00:30" readWriteTimeout="00:00:15.000">