**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
44 lines
1.8 KiB
Markdown
44 lines
1.8 KiB
Markdown
# 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 l’UI : **Settings → API Keys**.
|
||
|
||
Ce sont deux mécanismes indépendants. Le secret nginx n’est **pas** enregistré comme clé API dans AnythingLLM.
|
||
|
||
## Correctifs côté utilisateur
|
||
|
||
1. Ouvrir l’UI 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 l’extension : rappel explicite nginx vs clé AnythingLLM.
|
||
- Client : normalisation `normalizeApiSecret` — si l’utilisateur a collé `Bearer <secret>`, le préfixe est retiré avant l’envoi (évite un jeton parsé comme `Bearer` par erreur).
|
||
|
||
## Modalités d’analyse
|
||
|
||
- Vérifier la réponse HTTP brute (403 + corps JSON).
|
||
- Comparer la valeur configurée avec l’origine (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 l’extension après modification du client (`npm run compile` ou nouveau `.vsix`). Aucun changement nginx requis pour ce diagnostic.
|