Local AI

Sécurisez Open WebUI avec Keycloak et LDAP

Introduction

Bien qu'Open WebUI ait révolutionné la façon dont les développeurs interagissent avec les grands modèles de langage (LLM) locaux, son déploiement en équipe expose souvent une vulnérabilité critique : l'absence de gestion robuste des identités. Par défaut, de nombreuses configurations reposent sur de simples fichiers de mots de passe ou un accès ouvert, ce qui est insuffisant pour une collaboration de niveau entreprise. Ce guide détaille comment durcir votre instance Open WebUI en utilisant Keycloak en tant que fournisseur d'identité (IdP) et LDAP pour la synchronisation des répertoires. Cette architecture garantit que chaque membre de l'équipe dispose d'une identité unique, de contrôles d'accès granulaires et d'une connexion unique (SSO) transparente.

Prérequis et architecture

Avant de plonger dans la configuration, assurez-vous de disposer d'un serveur Keycloak en cours d'exécution (version 21+) et d'une instance Open WebUI (la version Dockerisée est recommandée). L'architecture repose sur la norme OpenID Connect (OIDC). Keycloak gérera l'authentification des utilisateurs, tandis qu'Open WebUI agira en tant que partie de confiance. Vous aurez besoin de : 1. Un realm Keycloak créé pour votre organisation. 2. Une application client enregistrée dans Keycloak avec l'authentification client activée. 3. Une connectivité réseau entre le conteneur Open WebUI et le serveur Keycloak.

Configuration de Keycloak

Tout d'abord, accédez à la console d'administration de votre Keycloak. Créez un nouveau client de type "OpenID Connect". Définissez l'URL racine et les URI de redirection valides pour pointer vers votre installation Open WebUI (par exemple, `http://your-domain/*`). Il est crucial d'activer l'"Authentification client" et le "Flux standard". Ensuite, configurez les paramètres de "Portée" (Scope). Assurez-vous que la portée "User Info" est activée, car Open WebUI nécessite les revendications `email`, `preferred_username` et `name` pour mapper correctement les utilisateurs. Si vous synchronisez avec un répertoire LDAP, configurez la fédération des utilisateurs dans Keycloak avant de continuer, en vous assurant que les noms d'utilisateur LDAP sont mappés proprement aux noms d'utilisateur de l'IdP.

Variables d'environnement Open WebUI

C'est ici que l'intégration prend vie. Vous devez transmettre des variables d'environnement spécifiques à votre conteneur Docker Open WebUI. Ces variables indiquent à l'application où trouver le fournisseur d'identité et comment valider les jetons. ```bash WEBUI_AUTH=True WEBUI_SECRET_KEY="change-me-to-a-random-secret" AUTH_TYPE_CREDENTIALS=True AUTH_TYPE_OAUTH_OIDC=True # Configuration Keycloak AUTH_OIDC_PROVIDER_URL=http://your-keycloak-domain/auth/realms/your-realm AUTH_OIDC_CLIENT_ID=your-client-id AUTH_OIDC_CLIENT_SECRET=your-client-secret AUTH_OIDC_SERVER_NAME=http://your-open-webui-domain AUTH_OIDC_SCOPES=openid email profile AUTH_OIDC_JWKS_URI=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/certs AUTH_OIDC_TOKEN_ENDPOINT=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/token AUTH_OIDC_AUTH_ENDPOINT=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/auth AUTH_OIDC_USER_INFO_ENDPOINT=http://your-keycloak-domain/auth/realms/your-realm/protocol/openid-connect/userinfo ``` Assurez-vous que `AUTH_TYPE_CREDENTIALS` est défini sur `True` si vous souhaitez autoriser une connexion de secours pour les utilisateurs administrateurs, ou définissez-la sur `False` pour imposer strictement l'utilisation d'OIDC uniquement.

Mappage des utilisateurs et des groupes

Une fois les conteneurs redémarrés avec ces variables, accédez à la page de connexion de votre Open WebUI. Vous devriez voir un bouton "Se connecter avec OpenID Connect". Après une authentification réussie, Keycloak renvoie l'identité de l'utilisateur. Open WebUI crée automatiquement un profil utilisateur local si l'email ou le nom d'utilisateur n'existe pas, à condition que la variable d'environnement `ALLOW_USER_SIGN_UP` ne la restreigne pas explicitement. Pour une collaboration d'équipe avancée, utilisez les groupes Keycloak pour gérer l'accès. Vous pouvez configurer Open WebUI pour n'autoriser que les utilisateurs de groupes Keycloak spécifiques à se connecter en définissant correctement les indicateurs `WEBUI_ADMIN_USER` et `WEBUI_USER_USER`, ou en exploitant la synchronisation de l'appartenance aux groupes LDAP directement dans Keycloak.

Conclusion

En intégrant Keycloak et LDAP à Open WebUI, vous transformez un outil personnel en une plateforme sécurisée et évolutive pour la collaboration en équipe. Cette configuration améliore non seulement la sécurité grâce à une gestion centralisée des identités, mais simplifie également la gestion du cycle de vie des utilisateurs. À mesure que l'adoption de l'IA locale se développe, la mise en œuvre de normes d'authentification appropriées comme OIDC n'est plus une option ; elle est essentielle pour maintenir l'intégrité des données et le contrôle d'accès dans tout environnement professionnel.
Share: