**Description**

Currently the `SalesforceHook` only supports authentication via username, password, and security token.  The Salesforce API used under the hood supports a few other authentication types:
- Direct access via a session ID
- IP filtering
- JWT access

**Use case / motivation**

The `SalesforceHook` should support all authentication types supported by the underlying API.

**Are you willing to submit a PR?**
Yes 🚀 

**Related Issues**
#8766 

airflow/providers/salesforce/hooks/salesforce.py
"""
        Get the description of an object from Salesforce.
        This description is the object's schema and
        some extra metadata that Salesforce stores for each object.
        :param obj: The name of the Salesforce object that we are getting a description of.
        :type obj: str
        :return: the description of the Salesforce object.
        :rtype: dict
        """
        conn = self.get_conn()
        return conn.__getattr__(obj).describe()
    def get_available_fields(self, obj: str) -> List[str]:
        """
        Get a list of all available fields for an object.
        :param obj: The name of the Salesforce object that we are getting a description of.
        :type obj: str
        :return: the names of the fields.
        :rtype: list(str)
        """
        self.get_conn()
        obj_description = self.describe_object(obj)
        return [field['name'] for field in obj_description['fields']]
    def get_object_from_salesforce(self, obj: str, fields: Iterable[str]) -> dict: