> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> Documentation sur HTTP

# HTTP

export const CloudNotSupportedBadge = () => {
  return <div className="cloudNotSupportedBadge">
            <div className="cloudNotSupportedIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.5" d="M6.33366 12.6666L12.3739 12.6667C13.6593 12.6667 14.7073 11.6187 14.7073 10.3334C14.7073 9.04804 13.6593 8.00003 12.3739 8.00003C12.3739 8.00003 12.3337 7.66659 12.0003 7.33325M10.667 5.33322C8.00033 2.33325 4.45395 4.78537 4.14195 6.68203C2.55728 6.7627 1.29395 8.06203 1.29395 9.6667C1.29395 11.3234 2.66699 12.6666 4.00033 12.6666" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.5" d="M2.66699 14L12.0003 4.66663" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>

        </div>
            Non pris en charge par ClickHouse Cloud
        </div>;
};

<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](/docs/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](/docs/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é.
