Google SSO Timeout on Pritunl – Stuck on “Continue” Page and Returns 500 Error

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/callback to 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


I’ve the very same issue and I can see error spiked up on google cloud console

We experience the same issue too:

[2025-08-08 09:24:11,578][ERROR] Exception on /key/callback [GET]
Traceback (most recent call last):
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 2190, in wsgi_app
response = self.full_dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1484, in full_dispatch_request
rv = self.dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1469, in dispatch_request
return 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 _wrapped
return call(*args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/handlers/key.py”, line 2563, in key_callback_get
valid, google_groups = sso.verify_google(username)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_google
data = service.users().get(userKey=user_email).execute()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 923, in execute
resp, content = _retry_request(
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 222, in _retry_request
raise exception
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 191, in _retry_request
resp, content = http.request(uri, method, *args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/google_auth_httplib2.py”, line 218, in request
response, 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_request
response = conn.getresponse()
File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 1377, in getresponse
response.begin()
File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 320, in begin
version, status, reason = self._read_status()
File “/usr/lib/pritunl/usr/lib/python3.9/http/client.py”, line 281, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), “iso-8859-1”)
File “/usr/lib/pritunl/usr/lib/python3.9/socket.py”, line 716, in readinto
return self._sock.recv_into(b)
File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1275, in recv_into
return self.read(nbytes, buffer)
File “/usr/lib/pritunl/usr/lib/python3.9/ssl.py”, line 1133, in read
return self._sslobj.read(len, buffer)
socket.timeout: The read operation timed out

It seems that this was the start of the issue:

[2025-08-07 06:47:42,961][ERROR] Exception on /key/callback [GET]
Traceback (most recent call last):
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 2190, in wsgi_app
response = self.full_dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1484, in full_dispatch_request
rv = self.dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1469, in dispatch_request
return 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 _wrapped
return call(*args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/handlers/key.py”, line 2563, in key_callback_get
valid, google_groups = sso.verify_google(username)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_google
data = service.users().get(userKey=user_email).execute()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 938, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 503 when requesting https://admin.googleapis.com/admin/directory/v1/users/nashran.nasir%40deferit.com?alt=json returned “Service unavailable. Please try again”. Details: “[{‘message’: ‘Service unavailable. Please try again’, ‘domain’: ‘global’, ‘reason’: ‘backendError’}]”>
[2025-08-07 06:47:42,961][ERROR] Exception on /key/callback [GET]
Traceback (most recent call last):
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 2190, in wsgi_app
response = self.full_dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1486, in full_dispatch_request
rv = self.handle_user_exception(e)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1484, in full_dispatch_request
rv = self.dispatch_request()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/flask/app.py”, line 1469, in dispatch_request
return 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 _wrapped
return call(*args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/handlers/key.py”, line 2563, in key_callback_get
valid, google_groups = sso.verify_google(username)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/pritunl/sso/google.py”, line 39, in verify_google
data = service.users().get(userKey=user_email).execute()
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/_helpers.py”, line 130, in positional_wrapper
return wrapped(*args, **kwargs)
File “/usr/lib/pritunl/usr/lib/python3.9/site-packages/googleapiclient/http.py”, line 938, in execute
raise HttpError(resp, content, uri=self.uri)
googleapiclient.errors.HttpError: <HttpError 503 when requesting https://admin.googleapis.com/admin/directory/v1/users/nashran.nasir%40deferit.com?alt=json returned “Service unavailable. Please try again”. Details: “[{‘message’: ‘Service unavailable. Please try again’, ‘domain’: ‘global’, ‘reason’: ‘backendError’}]”>

and after these 503 errors we started to get these timeouts and the first one was at:

[2025-08-07 21:17:38,340][ERROR] Exception on /key/callback [GET]

But it seems that yesterday it was not that bad, but in the last 1 hour, it happened twice and our team was not able to use pritunl for 10-20 minutes each time.

We use v1.32.4181.41 version.

There appears to be a network outage in the South Asia region affecting connectivity to the Google Workspace API. This is similar to an outage that occurred a few weeks ago in South Asia that impacted connectivity to the Pritunl subscription servers. These are regional issues with internet infrastructure in the South Asia region. I don’t have any further information on this, these appear to be related to government internet shutdowns occurring in the region that cause routing instability.

Hi Zach,

Could you please tell from where did you checked the status of Google Workspace API.

is it from this source: Google Workspace Status Dashboard

I’m getting the information from email reports. It’s only the South Asia region and only Google Workspace API errors.

If the issue is intermittent run the command below. This will disable the hourly single sign-on check for connected users.

sudo pritunl set app.sso_connection_check false

1 Like

Even issue affects in India

This is possibly an issue with rate limiting although I’ve observed it even with 1 request every 10 seconds. There will be a server update in 6-12 hours that will remove the use of the Google Workspace API for the hourly connection checks and use only OAuth for that validation. This update will also limit the requests to 1 request every 2 seconds.

An update has been released Pritunl v1.32.4349.59 that will implement rate limiting and remove redundant usage of the Google Workspace API. This should fix issues with active connections dropping but new connection requests need the API validation. If the API issues continue it may take multiple connection attempts for a user to connect. If set commands were used to disable single sign-on checks temporarily, run the commands below after updating to revert the single sign-on skip options to the default values. These commands can be run even if no changes were made to verify the values have the correct default configuration.

sudo pritunl unset app.sso_connection_check
sudo pritunl unset user.skip_remote_sso_check
1 Like