### Apache Airflow version

2.1.3 (latest released)

### Operating System

MacOS Big Sur

### Versions of Apache Airflow Providers

apache-airflow-providers-hashicorp==2.0.0

### Deployment

Astronomer

### Deployment details

_No response_

### What happened

When trying to to use the VaultHook with AppRole authentication via a connection defined as a conn_uri, I was unable to establish a connection in a custom operator due the 'role_id' not being provided despite it being an optional argument.

https://github.com/apache/airflow/blob/main/airflow/providers/hashicorp/hooks/vault.py#L124

### What you expected to happen

So, with a connection defined as a URI as follows:

```
http://[ROLE_ID]:[SECRET_ID]@https://[VAULT_URL]?auth_type=approle
```

I receive the following error when trying to run a task in a custom operator.

```
[2021-09-07 08:30:36,877] {base.py:79} INFO - Using connection to: id: vault. Host: https://[VAULT_URL], Port: None, Schema: None, Login: [ROLE_ID], Password: ***, extra: {'auth_type': 'approle'}
[2021-09-07 08:30:36,879] {taskinstance.py:1462} ERROR - Task failed with exception
Traceback (most recent call last):
  File "/usr/local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1164, in _run_raw_task
    self._prepare_and_execute_task_with_callbacks(context, task)
  File "/usr/local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1282, in _prepare_and_execute_task_with_callbacks
    result = self._execute_task(context, task_copy)
  File "/usr/local/lib/python3.7/site-packages/airflow/models/taskinstance.py", line 1312, in _execute_task
    result = task_copy.execute(context=context)
  File "/usr/local/airflow/plugins/operators/my_vault_operator.py", line 28, in execute
    vaulthook = VaultHook(vault_conn_id=self.vault_conn_id)
  File "/usr/local/lib/python3.7/site-packages/airflow/providers/hashicorp/hooks/vault.py", line 216, in __init__
    radius_port=radius_port,
  File "/usr/local/lib/python3.7/site-packages/airflow/providers/hashicorp/_internal_client/vault_client.py", line 153, in __init__
    raise VaultError("The 'approle' authentication type requires 'role_id'")
hvac.exceptions.VaultError: The 'approle' authentication type requires 'role_id', on None None
```

Given that the ROLE_ID and SECRET_ID are part of the connection, I was expecting that the hook should retrieve this from `self.connection.login`.

### How to reproduce

1. Create a connection to Vault defined as a `conn_uri`, e.g.  `http://[ROLE_ID]:[SECRET_ID]@https://[VAULT_URL]?auth_type=approle`
2. Create a simple custom operator as follows:
```
from airflow.models import BaseOperator
from airflow.providers.hashicorp.hooks.vault import VaultHook


class MyVaultOperator(BaseOperator):

    def __init__(self, vault_conn_id=None, *args, **kwargs):
        super(MyVaultOperator, self).__init__(*args, **kwargs)
        self.vault_conn_id = vault_conn_id

    def execute(self, context):
        vaulthook = VaultHook(vault_conn_id=self.vault_conn_id)
```

3. Create a simple DAG to use this operator
```
from datetime import datetime
from airflow import models
from operators.my_vault_operator import MyVaultOperator

default_args = {
    'owner': 'airflow',
    'start_date': datetime(2011, 1, 1),
}

dag_name = 'my_vault_dag'

with models.DAG(
    dag_name,
    default_args=default_args
) as dag:

    my_vault_task = MyVaultOperator(
        task_id='vault_task',
        vault_conn_id='vault',
    )
```
4. Run this DAG via `airflow tasks test my_vault_dag vault_task 2021-09-06`

### Anything else

_No response_

### Are you willing to submit PR?

- [X] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

airflow/providers/hashicorp/hooks/vault.py
self, secret_path: str, secret: dict, method: Optional[str] = None, cas: Optional[int] = None
    ) -> Response:
        """
        Creates or updates secret.
        :param secret_path: Path to read from
        :type secret_path: str
        :param secret: Secret to create or update for the path specified
        :type secret: dict
        :param method: Optional parameter to explicitly request a POST (create) or PUT (update) request to
            the selected kv secret engine. If no argument is provided for this parameter, hvac attempts to
            intelligently determine which method is appropriate. Only valid for KV engine version 1
        :type method: str
        :param cas: Set the "cas" value to use a Check-And-Set operation. If not set the write will be
            allowed. If set to 0 a write will only be allowed if the key doesn't exist.
            If the index is non-zero the write will only be allowed if the key's current version
            matches the version specified in the cas parameter. Only valid for KV engine version 2.
        :type cas: int
        :rtype: requests.Response
        :return: The response of the create_or_update_secret request.
        See https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v1.html
        and https://hvac.readthedocs.io/en/stable/usage/secrets_engines/kv_v2.html for details.
        """
        return self.vault_client.create_or_update_secret(
            secret_path=secret_path, secret=secret, method=method, cas=cas
        )