Hi,
We are facing an issue with Google SSO authentication in Pritunl.
When a user tries to log in via Google, the process gets stuck on the Google “Continue” page for a while, and then Pritunl returns a 500 Internal Server Error.
From the logs, it appears the failure happens when Pritunl calls the Google Admin SDK to fetch user or group details. The request hangs for some time and then fails with a socket.timeout during the HTTPS request.
This happens consistently and seems to be caused by network communication issues between the Pritunl server and Google APIs. The errors occur during both service.users().get() and service.groups().list() calls.
What we noticed:
-
The request stalls before eventually timing out.
-
The problem repeats for both user and group verification steps.
-
This ultimately causes
/sso/callbackto return a 500 error.
We will paste the relevant log snippets below for reference.
[summer-plains-2966][2025-08-08 14:43:28,550][ERROR] Google auth check errorTraceback (most recent call last):File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/user.py”, line 405, in sso_auth_checkvalid, google_groups = sso.verify_google(self.email)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_googledata = service.users().get(userKey=user_email).execute()File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapperreturn wrapped(*args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 923, in executeresp, content = _retry_request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 222, in _retry_requestraise exceptionFile “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 191, in _retry_requestresp, content = http.request(uri, method, *args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/google_auth_httplib2.py”, line 218, in requestresponse, content = self.http.request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1720, in request(response, content) = self._request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1440, in _request(response, content) = self._conn_request(conn, request_uri, method, body, headers)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1392, in _conn_requestresponse = conn.getresponse()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 1377, in getresponseresponse.begin()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 320, in beginversion, status, reason = self._read_status()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 281, in _read_statusline = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)File “/usr/lib/pritunl/usr/lib/python3.9/socket.py”, line 716, in readintoreturn self._sock.recv_into(b)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1275, in recv_intoreturn self.read(nbytes, buffer)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1133, in readreturn self._sslobj.read(len, buffer)socket.timeout: The read operation timed outuser_id = “685bea9351e4abc0d57518da”user_name = “simant.saurav@teachmint.com”[summer-plains-2966][2025-08-08 14:43:46,632][INFO] Authenticating useruser_name = “simant.saurav@teachmint.com”factors = [“google”][summer-plains-2966][2025-08-08 14:44:12,267][ERROR] Google auth check errorTraceback (most recent call last):File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/user.py”, line 405, in sso_auth_checkvalid, google_groups = sso.verify_google(self.email)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 43, in verify_googleresults = service.groups().list(userKey=user_email,File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapperreturn wrapped(*args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 923, in executeresp, content = _retry_request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 222, in _retry_requestraise exceptionFile “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 191, in _retry_requestresp, content = http.request(uri, method, *args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/google_auth_httplib2.py”, line 218, in requestresponse, content = self.http.request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1720, in request(response, content) = self._request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1440, in _request(response, content) = self._conn_request(conn, request_uri, method, body, headers)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1392, in _conn_requestresponse = conn.getresponse()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 1377, in getresponseresponse.begin()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 320, in beginversion, status, reason = self._read_status()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 281, in _read_statusline = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)File “/usr/lib/pritunl/usr/lib/python3.9/socket.py”, line 716, in readintoreturn self._sock.recv_into(b)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1275, in recv_intoreturn self.read(nbytes, buffer)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1133, in readreturn self._sslobj.read(len, buffer)socket.timeout: The read operation timed outuser_id = “685bea9351e4abc0d57518da”user_name = “test@test.com”[summer-plains-2966][2025-08-08 14:44:29,772][INFO] Authenticating useruser_name = “test@test.com”factors = [“google”][summer-plains-2966][2025-08-08 14:44:48,272][ERROR] Google auth check errorTraceback (most recent call last):File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/user.py”, line 405, in sso_auth_checkvalid, google_groups = sso.verify_google(self.email)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_googledata = service.users().get(userKey=user_email).execute()File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapperreturn wrapped(*args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 923, in executeresp, content = _retry_request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 222, in _retry_requestraise exceptionFile “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 191, in _retry_requestresp, content = http.request(uri, method, *args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/google_auth_httplib2.py”, line 218, in requestresponse, content = self.http.request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1720, in request(response, content) = self._request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1440, in _request(response, content) = self._conn_request(conn, request_uri, method, body, headers)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1392, in _conn_requestresponse = conn.getresponse()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 1377, in getresponseresponse.begin()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 320, in beginversion, status, reason = self._read_status()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 281, in _read_statusline = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)File “/usr/lib/pritunl/usr/lib/python3.9/socket.py”, line 716, in readintoreturn self._sock.recv_into(b)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1275, in recv_intoreturn self.read(nbytes, buffer)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1133, in readreturn self._sslobj.read(len, buffer)socket.timeout: The read operation timed outuser_id = “685bea9asdf351e4abc0d57518da”user_name = “test@test.com”[summer-plains-2966][2025-08-08 14:45:13,119][INFO] Authenticating useruser_name = “test@test.com”factors = [“google”][summer-plains-2966][2025-08-08 14:45:31,476][ERROR] Google auth check errorTraceback (most recent call last):File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/user.py”, line 405, in sso_auth_checkvalid, google_groups = sso.verify_google(self.email)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_googledata = service.users().get(userKey=user_email).execute()File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapperreturn wrapped(*args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 923, in executeresp, content = _retry_request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 222, in _retry_requestraise exceptionFile “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 191, in _retry_requestresp, content = http.request(uri, method, *args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/google_auth_httplib2.py”, line 218, in requestresponse, content = self.http.request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1720, in request(response, content) = self._request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1440, in _request(response, content) = self._conn_request(conn, request_uri, method, body, headers)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1392, in _conn_requestresponse = conn.getresponse()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 1377, in getresponseresponse.begin()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 320, in beginversion, status, reason = self._read_status()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 281, in _read_statusline = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)File “/usr/lib/pritunl/usr/lib/python3.9/socket.py”, line 716, in readintoreturn self._sock.recv_into(b)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1275, in recv_intoreturn self.read(nbytes, buffer)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1133, in readreturn self._sslobj.read(len, buffer)socket.timeout: The read operation timed outuser_id = “685beaasdfa9351e4abc0d57518da”user_name = “test@test.com”factors = [“google”][summer-plains-2966][2025-08-08 14:46:14,651][ERROR] Google auth check errorTraceback (most recent call last):File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/user/user.py”, line 405, in sso_auth_checkvalid, google_groups = sso.verify_google(self.email)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_googledata = service.users().get(userKey=user_email).execute()File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapperreturn wrapped(*args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 923, in executeresp, content = _retry_request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 222, in _retry_requestraise exceptionFile “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 191, in _retry_requestresp, content = http.request(uri, method, *args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/google_auth_httplib2.py”, line 218, in requestresponse, content = self.http.request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1720, in request(response, content) = self._request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1440, in _request(response, content) = self._conn_request(conn, request_uri, method, body, headers)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1392, in _conn_requestresponse = conn.getresponse()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 1377, in getresponseresponse.begin()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 320, in beginversion, status, reason = self._read_status()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 281, in _read_statusline = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)File “/usr/lib/pritunl/usr/lib/python3.9/socket.py”, line 716, in readintoreturn self._sock.recv_into(b)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1275, in recv_intoreturn self.read(nbytes, buffer)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1133, in readreturn self._sslobj.read(len, buffer)socket.timeout: The read operation timed outuser_id = “685asdfbea9351asdfae4abc0d57518da”user_name = “test@teactewsa.com”factors = [“google”][summer-plains-2966][2025-08-08 14:46:28,224][ERROR] Exception on /sso/callback [GET]Traceback (most recent call last):File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 2190, in wsgi_appresponse = self.full_dispatch_request()File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1486, in full_dispatch_requestrv = self.handle_user_exception(e)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1484, in full_dispatch_requestrv = self.dispatch_request()File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1469, in dispatch_requestreturn self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/auth/app.py”, line 26, in _wrappedreturn call(*args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/handlers/sso.py”, line 664, in sso_callback_getvalid, google_groups = sso.verify_google(username)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_googledata = service.users().get(userKey=user_email).execute()File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapperreturn wrapped(*args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 923, in executeresp, content = _retry_request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 222, in _retry_requestraise exceptionFile “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 191, in _retry_requestresp, content = http.request(uri, method, *args, **kwargs)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/google_auth_httplib2.py”, line 218, in requestresponse, content = self.http.request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1720, in request(response, content) = self._request(File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1440, in _request(response, content) = self._conn_request(conn, request_uri, method, body, headers)File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/httplib2/init.py”, line 1392, in _conn_requestresponse = conn.getresponse()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 1377, in getresponseresponse.begin()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 320, in beginversion, status, reason = self._read_status()File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 281, in _read_statusline = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)File “/usr/lib/pritunl/usr/lib/python3.9/socket.py”, line 716, in readintoreturn self._sock.recv_into(b)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1275, in recv_intoreturn self.read(nbytes, buffer)File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1133, in readreturn self._sslobj.read(len, buffer)socket.timeout: The read operation timed out
