smart_ide/docs/fixKnowledge/anythingllm-extension-403-api-key.md
Nicolas Cantu 564b9d5576 AnythingLLM extension: clarify API key vs nginx bearer, normalize Bearer prefix
**Motivations:**
- 403 No valid api key when users paste Ollama nginx secret into extension

**Root causes:**
- AnythingLLM validates keys only from its DB; nginx Bearer is unrelated

**Correctifs:**
- README and fixKnowledge doc; strip optional Bearer prefix in client

**Evolutions:**
- Extension version 0.1.1

**Pages affectées:**
- extensions/anythingllm-workspaces/*
- docs/fixKnowledge/anythingllm-extension-403-api-key.md
- docs/README.md
2026-03-23 14:23:09 +01:00

44 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AnythingLLM extension — 403 « No valid api key found »
**Author:** 4NK
## Symptôme
Commande **AnythingLLM: List workspaces** → erreur du type :
`AnythingLLM API 403: {"error":"No valid api key found."}`
## Cause
Le middleware amont `validApiKey` lit `Authorization`, extrait le jeton après `Bearer `, puis appelle `ApiKey.get({ secret })` sur la base AnythingLLM. Toute valeur absente de cette base produit la même réponse 403.
## Root cause fréquente
Confusion entre :
- le **secret Bearer nginx** utilisé pour `https://ia.enso.4nkweb.com/ollama/…` (documenté dans `deploy/nginx/README-ia-enso.md`) ;
- une **clé API AnythingLLM** créée dans lUI : **Settings → API Keys**.
Ce sont deux mécanismes indépendants. Le secret nginx nest **pas** enregistré comme clé API dans AnythingLLM.
## Correctifs côté utilisateur
1. Ouvrir lUI AnythingLLM (`anythingllm.baseUrl`).
2. **Settings → API Keys** : créer une clé si besoin, copier le secret affiché.
3. Coller ce secret dans `anythingllm.apiKey` (réglages **Utilisateur** de léditeur).
## Correctifs côté code / doc
- README de lextension : rappel explicite nginx vs clé AnythingLLM.
- Client : normalisation `normalizeApiSecret` — si lutilisateur a collé `Bearer <secret>`, le préfixe est retiré avant lenvoi (évite un jeton parsé comme `Bearer` par erreur).
## Modalités danalyse
- Vérifier la réponse HTTP brute (403 + corps JSON).
- Comparer la valeur configurée avec lorigine (fichier map nginx vs écran API Keys).
- Tester avec `curl` : `curl -sS -H "Authorization: Bearer <secret AnythingLLM>" "<baseUrl>/api/v1/workspaces"`.
## Modalités de déploiement
Redéployer / réinstaller lextension après modification du client (`npm run compile` ou nouveau `.vsix`). Aucun changement nginx requis pour ce diagnostic.