# Outline

# Nouvelle page

# Connecter Outline à GitLab auto-hébergé (OIDC)

## <a class="anchor" id="bkmrk-"></a>Objectif

Utiliser le **GitLab interne** de l'entreprise comme fournisseur d'identité. Les comptes  
(email + mot de passe) sont gérés dans GitLab, et Outline délègue la connexion à GitLab.  
Aucune dépendance externe — seulement Outline + GitLab.

> Remplace partout `gitlab.improvize.eu` par le vrai domaine de ton GitLab, et  
> `outline.improvize.eu` par celui d'Outline.

**Pré-requis** : HTTPS d'Outline fonctionnel (`https://outline.improvize.eu` affiche la  
page de connexion, sans boucle de redirection).

---

## <a class="anchor" id="bkmrk--2"></a>Étape 1 — Créer l'application OIDC dans GitLab

En tant qu'**administrateur GitLab** (pour que tous les comptes puissent se connecter) :

1. **Admin Area** → **Applications** → **New application**.
2. Renseigne : 
    - **Name** : `Outline`
    - **Redirect URI** (à copier **exactement**, en `https://`, sans slash en trop) : ```plain_text
        https://outline.improvize.eu/auth/oidc.callback
        
        ```
        
        <div class="code-toolbar"><div class="toolbar"><div class="toolbar-item">  
        </div></div></div>
    - **Confidential** : ✅ coché
    - **Trusted** : ✅ coché (recommandé — évite l'écran de consentement à chaque user)
    - **Scopes** : cocher uniquement 
        - ✅ `openid`
        - ✅ `profile`
        - ✅ `email`
3. Clique **Save application**.
4. GitLab affiche alors : 
    - **Application ID** → `OIDC_CLIENT_ID`
    - **Secret** → `OIDC_CLIENT_SECRET` (affiché une seule fois, note-le tout de suite)

---

## <a class="anchor" id="bkmrk--4"></a>Étape 2 — Configurer Outline

Édite le fichier `.env` d'Outline :

```bash
sudo -u outline -i
cd /opt/outline/app
nano .env

```

<div class="code-toolbar" id="bkmrk--5"><div class="toolbar"><div class="toolbar-item">  
</div></div></div>Ajoute (ou complète) le bloc OIDC :

```ini
OIDC_CLIENT_ID=colle_ici_application_id
OIDC_CLIENT_SECRET=colle_ici_le_secret
OIDC_AUTH_URI=https://gitlab.improvize.eu/oauth/authorize
OIDC_TOKEN_URI=https://gitlab.improvize.eu/oauth/token
OIDC_USERINFO_URI=https://gitlab.improvize.eu/oauth/userinfo
OIDC_USERNAME_CLAIM=preferred_username
OIDC_DISPLAY_NAME=GitLab
OIDC_SCOPES=openid profile email

```

<div class="code-toolbar" id="bkmrk--6"><div class="toolbar"><div class="toolbar-item">  
</div></div></div>Vérifie que ces lignes sont correctes et qu'aucun ancien bloc Google ne traîne :

```ini
URL=https://outline.improvize.eu
FORCE_HTTPS=true

```

<div class="code-toolbar" id="bkmrk--7"><div class="toolbar"><div class="toolbar-item">  
</div></div></div>```bash
# Repère d'éventuels restes de config Google à supprimer
grep -n GOOGLE .env

```

<div class="code-toolbar" id="bkmrk--8"><div class="toolbar"><div class="toolbar-item">  
</div></div></div>Sauvegarde, puis sors de la session :

```bash
exit

```

<div class="code-toolbar" id="bkmrk--9"><div class="toolbar"><div class="toolbar-item">  
</div></div></div>---

## <a class="anchor" id="bkmrk--11"></a>Étape 3 — Redémarrer Outline

```bash
sudo systemctl restart outline
sudo journalctl -u outline -f

```

<div class="code-toolbar" id="bkmrk--12"><div class="toolbar"><div class="toolbar-item">  
</div></div></div>Laisse les logs ouverts pour voir les erreurs éventuelles en direct.

---

## <a class="anchor" id="bkmrk--14"></a>Étape 4 — Tester la connexion

1. Ouvre `https://outline.improvize.eu`.
2. Un bouton **« Continue with GitLab »** doit apparaître.
3. Clique → redirection vers GitLab.
4. Connecte-toi avec un compte GitLab (email + mot de passe GitLab).
5. (Si l'application n'est pas « Trusted ») écran de consentement → **Authorize**.
6. Retour automatique sur Outline, connecté. ✅

> Le **premier utilisateur** qui se connecte devient automatiquement **administrateur**  
> de l'espace Outline. Connecte-toi en premier avec ton compte.

---

## <a class="anchor" id="bkmrk--16"></a>Gestion des accès au quotidien

- **Donner accès à Outline** = la personne a besoin d'un compte sur le GitLab interne.
- **Retirer un accès** = désactiver / supprimer le compte côté GitLab.
- Plus aucun mot de passe à gérer dans Outline : tout passe par GitLab.

---

## <a class="anchor" id="bkmrk--18"></a>Dépannage

Pendant la tentative de connexion, surveille `sudo journalctl -u outline -f`.

<table id="bkmrk-sympt%C3%B4me-cause-proba"><thead><tr><th>Symptôme</th><th>Cause probable</th><th>Correctif</th></tr></thead><tbody><tr><td>`redirect_uri_mismatch`côté GitLab</td><td>Redirect URI non identique au caractère près</td><td>Recopier exactement `https://outline.improvize.eu/auth/oidc.callback`dans l'app GitLab</td></tr><tr><td>Pas de bouton « Continue with GitLab »</td><td>Bloc `OIDC_*`mal chargé</td><td>Vérifier `.env` puis `systemctl restart outline`</td></tr><tr><td>Erreur de certificat dans les logs</td><td>GitLab en HTTPS auto-signé</td><td>GitLab doit avoir un certificat valide (Let's Encrypt)</td></tr><tr><td>`invalid_scope`</td><td>Scopes manquants dans l'app GitLab</td><td>Cocher `openid`, `profile`, `email`</td></tr><tr><td>Boucle de redirection 301</td><td>`X-Forwarded-Proto: https` non transmis par le reverse proxy</td><td>Ajouter l'en-tête sur le proxy qui termine le HTTPS</td></tr></tbody></table>

---

## <a class="anchor" id="bkmrk--20"></a>Référence — Endpoints

<table id="bkmrk-%C3%89l%C3%A9ment-valeur-autho"><thead><tr><th>Élément</th><th>Valeur</th></tr></thead><tbody><tr><td>Authorize</td><td>`https://gitlab.improvize.eu/oauth/authorize`</td></tr><tr><td>Token</td><td>`https://gitlab.improvize.eu/oauth/token`</td></tr><tr><td>UserInfo</td><td>`https://gitlab.improvize.eu/oauth/userinfo`</td></tr><tr><td>Callback Outline</td><td>`https://outline.improvize.eu/auth/oidc.callback`</td></tr><tr><td>Discovery GitLab</td><td>`https://gitlab.improvize.eu/.well-known/openid-configuration`</td></tr></tbody></table>