@@ -1060,9 +1060,11 @@ def construct_oauth2_permission_url(permission_url, redirect_uri, client_id, sco
1060
1060
def start_device_authorisation_grant (permission_url ):
1061
1061
"""Requests the device authorisation grant flow URI and user code - see https://tools.ietf.org/html/rfc8628"""
1062
1062
try :
1063
+ ssl_context = ssl .create_default_context (purpose = ssl .Purpose .SERVER_AUTH )
1064
+ ssl_context .minimum_version = ssl .TLSVersion .TLSv1_2 # GitHub CodeQL issue 2
1063
1065
response = urllib .request .urlopen (
1064
1066
urllib .request .Request (permission_url , headers = {'User-Agent' : APP_NAME }),
1065
- timeout = AUTHENTICATION_TIMEOUT ).read ()
1067
+ timeout = AUTHENTICATION_TIMEOUT , context = ssl_context ).read ()
1066
1068
parsed_result = json .loads (response )
1067
1069
verification_uri = parsed_result .get ('verification_uri_complete' , parsed_result ['verification_uri' ])
1068
1070
user_code = parsed_result ['user_code' ]
@@ -1187,10 +1189,14 @@ def get_oauth2_authorisation_tokens(token_url, redirect_uri, client_id, client_s
1187
1189
expires_at = time .time () + expires_in
1188
1190
while time .time () < expires_at and not EXITING :
1189
1191
try :
1192
+ ssl_context = ssl .create_default_context (purpose = ssl .Purpose .SERVER_AUTH )
1193
+ ssl_context .minimum_version = ssl .TLSVersion .TLSv1_2 # GitHub CodeQL issue 2
1194
+
1190
1195
# in all flows except DAG, we make one attempt only
1191
1196
response = urllib .request .urlopen (
1192
1197
urllib .request .Request (token_url , data = urllib .parse .urlencode (params ).encode ('utf-8' ),
1193
- headers = {'User-Agent' : APP_NAME }), timeout = AUTHENTICATION_TIMEOUT ).read ()
1198
+ headers = {'User-Agent' : APP_NAME }), timeout = AUTHENTICATION_TIMEOUT ,
1199
+ context = ssl_context ).read ()
1194
1200
return json .loads (response )
1195
1201
1196
1202
except urllib .error .HTTPError as e :
@@ -1262,9 +1268,12 @@ def refresh_oauth2_access_token(token_url, client_id, client_secret, jwt_client_
1262
1268
params ['client_assertion' ] = jwt_client_assertion
1263
1269
1264
1270
try :
1271
+ ssl_context = ssl .create_default_context (purpose = ssl .Purpose .SERVER_AUTH )
1272
+ ssl_context .minimum_version = ssl .TLSVersion .TLSv1_2 # GitHub CodeQL issue 2
1265
1273
response = urllib .request .urlopen (
1266
1274
urllib .request .Request (token_url , data = urllib .parse .urlencode (params ).encode ('utf-8' ),
1267
- headers = {'User-Agent' : APP_NAME }), timeout = AUTHENTICATION_TIMEOUT ).read ()
1275
+ headers = {'User-Agent' : APP_NAME }), timeout = AUTHENTICATION_TIMEOUT ,
1276
+ context = ssl_context ).read ()
1268
1277
token = json .loads (response )
1269
1278
if 'expires_in' in token : # some servers return integer values as strings - fix expiry values (GitHub #237)
1270
1279
token ['expires_in' ] = int (token ['expires_in' ])
0 commit comments