**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
:param conn_id: The name of the connection that has the parameters needed to connect to Salesforce.
        The connection should be of type `Salesforce`.
    :type conn_id: str
    .. note::
        To connect to Salesforce make sure the connection includes a Username, Password, and Security Token.
        If in sandbox, enter a Domain value of 'test'.  Login methods such as IP filtering and JWT are not
        supported currently.
    """
    conn_name_attr = "salesforce_conn_id"
    default_conn_name = "salesforce_default"
    conn_type = "salesforce"
    hook_name = "Salesforce"
    def __init__(self, salesforce_conn_id: str = default_conn_name) -> None:
        super().__init__()
        self.conn_id = salesforce_conn_id
        self.conn = None
    @staticmethod
    def get_connection_form_widgets() -> Dict[str, Any]:
        """Returns connection widgets to add to connection form"""
        from flask_appbuilder.fieldwidgets import BS3PasswordFieldWidget, BS3TextFieldWidget
        from flask_babel import lazy_gettext
        from wtforms import PasswordField, StringField
        return {
            "extra__salesforce__security_token": PasswordField(
                lazy_gettext("Security Token"), widget=BS3PasswordFieldWidget()
            ),
            "extra__salesforce__domain": StringField(lazy_gettext("Domain"), widget=BS3TextFieldWidget()),
        }
    @staticmethod
    def get_ui_field_behaviour() -> Dict: