> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-fbfa8bee.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation sur HTTP

# HTTP

<CloudNotSupportedBadge />

<Note>
  Cette page ne s'applique pas à [ClickHouse Cloud](https://clickhouse.com/cloud). La fonctionnalité décrite ici n'est pas disponible dans les services ClickHouse Cloud.
  Consultez le guide ClickHouse [Compatibilité Cloud](/fr/products/cloud/guides/cloud-compatibility) pour plus d'informations.
</Note>

Le serveur HTTP peut être utilisé pour authentifier les utilisateurs de ClickHouse. L’authentification HTTP ne peut être utilisée que comme authentificateur externe pour des utilisateurs existants, définis dans `users.xml` ou dans les chemins locaux de contrôle d’accès. Actuellement, seul le schéma d’authentification [Basic](https://datatracker.ietf.org/doc/html/rfc7617) utilisant la méthode GET est pris en charge.

<div id="http-auth-server-definition">
  ## Définition du serveur d’authentification HTTP
</div>

Pour définir un serveur d’authentification HTTP, vous devez ajouter la section `http_authentication_servers` à `config.xml`.

**Exemple**

```xml theme={null}
<clickhouse>
    <!- ... -->
    <http_authentication_servers>
        <basic_auth_server>
          <uri>http://localhost:8000/auth</uri>
          <connection_timeout_ms>1000</connection_timeout_ms>
          <receive_timeout_ms>1000</receive_timeout_ms>
          <send_timeout_ms>1000</send_timeout_ms>
          <max_tries>3</max_tries>
          <retry_initial_backoff_ms>50</retry_initial_backoff_ms>
          <retry_max_backoff_ms>1000</retry_max_backoff_ms>
          <forward_headers>
            <name>Custom-Auth-Header-1</name>
            <name>Custom-Auth-Header-2</name>
          </forward_headers>

        </basic_auth_server>
    </http_authentication_servers>
</clickhouse>

```

Notez que vous pouvez définir plusieurs serveurs HTTP dans la section `http_authentication_servers` en leur attribuant des noms distincts.

**Paramètres**

* `uri` - URI utilisée pour effectuer la requête d'authentification

Délais d'expiration, en millisecondes, sur le socket utilisé pour communiquer avec le serveur :

* `connection_timeout_ms` - Par défaut : 1000 ms.
* `receive_timeout_ms` - Par défaut : 1000 ms.
* `send_timeout_ms` - Par défaut : 1000 ms.

Paramètres de nouvelle tentative :

* `max_tries` - Nombre maximal de tentatives pour effectuer une requête d'authentification. Par défaut : 3
* `retry_initial_backoff_ms` - Intervalle initial de backoff lors d'une nouvelle tentative. Par défaut : 50 ms
* `retry_max_backoff_ms` - Intervalle maximal de backoff. Par défaut : 1000 ms

En-têtes transférés :

Cette partie définit quels en-têtes seront transférés des en-têtes de requête du client vers le service d'authentification HTTP externe. Notez que les en-têtes seront comparés à ceux de la config sans tenir compte de la casse, mais transférés tels quels, c'est-à-dire sans être modifiés.

<div id="enabling-http-auth-in-users-xml">
  ### Activation de l’authentification HTTP dans `users.xml`
</div>

Pour activer l’authentification HTTP pour l’utilisateur, indiquez la section `http_authentication` au lieu de `password` ou d’autres sections similaires dans la définition de l’utilisateur.

Paramètres :

* `server` - Nom du serveur d’authentification HTTP configuré dans le fichier principal `config.xml`, comme décrit précédemment.
* `scheme` - Schéma d’authentification HTTP. Seul `Basic` est actuellement pris en charge. Par défaut : Basic

Exemple (à placer dans `users.xml`) :

```xml theme={null}
<clickhouse>
    <!- ... -->
    <my_user>
        <!- ... -->
        <http_authentication>
            <server>basic_server</server>
            <scheme>basic</scheme>
        </http_authentication>
    </test_user_2>
</clickhouse>
```

<Note>
  Notez que l’authentification HTTP ne peut pas être utilisée avec un autre mécanisme d’authentification. La présence d’une autre section, telle que `password`, en plus de `http_authentication`, forcera ClickHouse à s’arrêter.
</Note>

<div id="enabling-http-auth-using-sql">
  ### Activer l'authentification HTTP avec SQL
</div>

Lorsque la fonctionnalité de [contrôle d'accès et de gestion des comptes pilotés par SQL](/fr/concepts/features/security/access-rights#access-control-usage) est activée dans ClickHouse, il est également possible de créer, à l'aide d'instructions SQL, des utilisateurs identifiés par authentification HTTP.

```sql theme={null}
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server' SCHEME 'Basic'
```

...ou `Basic` est utilisé par défaut en l’absence de définition explicite du schéma d’authentification

```sql theme={null}
CREATE USER my_user IDENTIFIED WITH HTTP SERVER 'basic_server'
```

<div id="passing-session-settings">
  ### Transmission des paramètres de session
</div>

Si le corps de la réponse d'un serveur d'authentification HTTP est au format JSON et contient le sous-objet `settings`, ClickHouse essaiera d'interpréter ses paires clé-valeur comme des valeurs de type chaîne et de les appliquer comme paramètres de session à la session en cours de l'utilisateur authentifié. Si l'analyse échoue, le corps de la réponse du serveur sera ignoré.
