2424
2525logger = ingestion_logger ()
2626
27+ SAS_CLI_AUTH_HEADER = "Basic c2FzLmNsaTo="
28+
2729
2830class SASClient :
2931 """
@@ -39,7 +41,7 @@ def __init__(self, config: SASConnection):
3941 auth_token = self .get_auth_token ,
4042 api_version = "" ,
4143 allow_redirects = True ,
42- verify = False ,
44+ verify = self . config . verifySSL ,
4345 )
4446 self .client = TrackedREST (client_config , source_name = "sas" )
4547 # custom setting
@@ -164,8 +166,33 @@ def get_token(self, base_url, user, password):
164166 payload = {"grant_type" : "password" , "username" : user , "password" : password }
165167 headers = {
166168 "Content-type" : "application/x-www-form-urlencoded" ,
167- "Authorization" : "Basic c2FzLmNsaTo=" ,
169+ "Authorization" : SAS_CLI_AUTH_HEADER ,
168170 }
169171 url = base_url + endpoint
170- response = requests .request ("POST" , url , headers = headers , data = payload , verify = False , timeout = 10 )
171- return response .json ()["access_token" ]
172+ response = requests .request (
173+ "POST" ,
174+ url ,
175+ headers = headers ,
176+ data = payload ,
177+ verify = self .config .verifySSL ,
178+ timeout = 10 ,
179+ )
180+ logger .debug (
181+ "Token request for user: %s completed with status: %s" ,
182+ user ,
183+ response .status_code ,
184+ )
185+ response .raise_for_status ()
186+ try :
187+ body = response .json ()
188+ except ValueError as exc :
189+ raise RuntimeError (
190+ f"SAS token endpoint returned non-JSON response (HTTP { response .status_code } )"
191+ ) from exc
192+
193+ token = body .get ("access_token" )
194+ if not token :
195+ raise RuntimeError (
196+ f"Failed to retrieve access_token from SAS (HTTP { response .status_code } )"
197+ )
198+ return token
0 commit comments