Home > Software engineering >  YesodAuth Google OAuth2 timing out
YesodAuth Google OAuth2 timing out

Time:12-30

I'm trying to set up Authentication and Authorization for my Yesod website according to the book.

However, once I set up my Google OAuth2, I get a timeout:

HttpExceptionRequest Request {
  host                 = "accounts.google.com"
  port                 = 443
  secure               = True
  requestHeaders       = [("Content-Type","application/x-www-form-urlencoded")]
  path                 = "/o/oauth2/token"
  queryString          = ""
  method               = "POST"
  proxy                = Nothing
  rawBody              = False
  redirectCount        = 10
  responseTimeout      = ResponseTimeoutDefault
  requestVersion       = HTTP/1.1
  proxySecureMode      = ProxySecureWithConnect
}
 ConnectionTimeout

I tried using yesod-auth-oauth2 instead, but I still got a timeout error:

HttpExceptionRequest Request {
  host                 = "www.googleapis.com"
  port                 = 443
  secure               = True
  requestHeaders       = [("Content-Type","application/x-www-form-urlencoded"),("Authorization","<REDACTED>"),("User-Agent","hoauth2"),("Accept","application/json")]
  path                 = "/oauth2/v3/token"
  queryString          = ""
  method               = "POST"
  proxy                = Nothing
  rawBody              = False
  redirectCount        = 10
  responseTimeout      = ResponseTimeoutDefault
  requestVersion       = HTTP/1.1
  proxySecureMode      = ProxySecureWithConnect
}
 ConnectionTimeout

I have the Google API and Contacts API enabled for the web application. I'm running my website locally right now, and have my Authorized redirect URIs as

  • http://localhost:3000/auth/page/google/callback
  • http://localhost:3000/auth/page/googleemail2/complete

CodePudding user response:

Turns out for my case, it was due to the IPv6 address of www.googleapis.com being filtered out by Cisco AnyConnect Socket Filter.

For instance, in the connection package, I Debug.Trace.trace'd addrs in the resolve' function to find out that the server was trying to connect initially to the IPv6 address, then the IPv4 one. Connecting to the IPv4 addresses (e.g. using ping or telnet) worked, but the IPv6 address did not, so ultimately it was a firewall issue.

  • Related