**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 

tests/providers/salesforce/hooks/test_salesforce.py
mock_data_frame.return_value.to_json = Mock()
        filename = "test"
        obj_name = "obj_name"
        data_frame = self.salesforce_hook.write_object_to_file(
            query_results=[{"attributes": {"type": obj_name}}],
            filename=filename,
            fmt="json",
            coerce_to_timestamp=True,
        )
        mock_describe_object.assert_called_once_with(obj_name)
        mock_data_frame.return_value.to_json.assert_called_once_with(filename, "records", date_unit="s")
        pd.testing.assert_frame_equal(
            data_frame, pd.DataFrame({"test": [1, 2, 3], "field_1": [1.546301e09, 1.546387e09, 1.546474e09]})
        )
    @patch("airflow.providers.salesforce.hooks.salesforce.time.time", return_value=1.23)
    @patch(
        "airflow.providers.salesforce.hooks.salesforce.pd.DataFrame.from_records",
        return_value=pd.DataFrame({"test": [1, 2, 3]}),
    )
    def test_write_object_to_file_ndjson_with_record_time(self, mock_data_frame, mock_time):