okta / okta-sdk-python

Apache License 2.0
229 stars 143 forks source link

fix: ensure requestTimeout and maxRetries are integers #394

Open tgarciaalv opened 2 months ago

tgarciaalv commented 2 months ago

This is failing when environment variables are used for configuration. Env vars are strings but are never converted to int before using them in arithmetic operations.

My configuration:

               "OKTA_CLIENT_CONNECTIONTIMEOUT": "30",
                "OKTA_CLIENT_ORGURL": "https://dev-89428916.okta.com",
                "OKTA_CLIENT_AUTHORIZATIONMODE": "PrivateKey",
                "OKTA_CLIENT_CLIENTID": "${env:OKTA_CLIENT_CLIENTID}",
                "OKTA_CLIENT_SCOPES": "okta.users.read,okta.groups.read",
                "OKTA_CLIENT_PRIVATEKEY": "${env:OKTA_CLIENT_PRIVATEKEY}",
                "OKTA_CLIENT_REQUESTTIMEOUT": "0",
                "OKTA_CLIENT_RATELIMIT_MAXRETRIES": "4",
                "OKTA_CLIENT_LOGGING_ENABLED": "true",
                "OKTA_CLIENT_LOGGING_LEVEL": "INFO",

My error:

        # Raise Value Error if numerical inputs are invalid (< 0)
        self._request_timeout = config["client"].get('requestTimeout', 0)
>       if self._request_timeout < 0:
E       TypeError: '<' not supported between instances of 'str' and 'int'

/opt/homebrew/lib/python3.11/site-packages/okta/request_executor.py:35: TypeError

The os.environ dictionary in Python expects its values to be strings.