Come configurare l'autenticazione con chiave segreta JWT di ONLYOFFICE

L'autenticazione JWT di ONLYOFFICE funziona solo quando il Document Server e l'applicazione di integrazione utilizzano la stessa chiave segreta. Nelle attuali implementazioni Docker, la convalida JWT è abilitata per impostazione predefinita. Per un'integrazione stabile, imposta una chiave persistente personalizzata JWT_SECRETanziché affidarti al valore generato automaticamente dal container, quindi configura la stessa chiave segreta in Nextcloud, nel tuo gestore di documenti personalizzato o in qualsiasi connettore che interagisca con ONLYOFFICE Docs.

Questa guida pratica si concentra sulla configurazione di cui probabilmente avrete bisogno: Docker e Docker Compose, integrazioni personalizzate che firmano la configurazione dell'editor, comportamento di intestazione/corpo, verifica, rotazione ed errori comuni. Si basa sulla documentazione ONLYOFFICE aggiornata a ottobre 2026.

Riferimento rapido

CollocamentoValore tipico di DockerScopo
JWT_ENABLEDtrueAbilita la convalida JWT. Le immagini Docker correnti la abilitano per impostazione predefinita.
JWT_SECRETUn forte valore casuale privatoSegreto HMAC condiviso utilizzato per firmare e convalidare i token.
JWT_HEADERAuthorizationNome dell'intestazione utilizzato per le richieste HTTP contenenti JWT.
JWT_IN_BODYfalseper impostazione predefinitaControlla la convalida dei token nei corpi delle richieste per le richieste HTTP supportate.
Algoritmo di firmaHS256Algoritmo utilizzato negli esempi di firma ufficiali di ONLYOFFICE.

A partire dalla versione 7.2 di ONLYOFFICE Docs, le implementazioni Docker abilitano JWT per impostazione predefinita e generano una chiave segreta casuale se non ne viene specificata una. La documentazione ufficiale di Docker avverte che una chiave segreta generata automaticamente può cambiare dopo un riavvio o la ricreazione del container, compromettendo le integrazioni. Impostare una chiave segreta esplicita per qualsiasi implementazione reale. Consultare la sezione "Configurazione di JWT per ONLYOFFICE Docs" e la guida ufficiale all'installazione di Docker .

1. Identificare il contenitore ONLYOFFICE e il metodo di distribuzione

Terminale Ubuntu che mostra il container Docker onlyoffice/documentserver in esecuzione e il relativo tag immagine.
Prima di modificare le impostazioni JWT, verifica quale container di ONLYOFFICE Docs è in esecuzione, soprattutto se sull'host sono presenti più istanze.

Per un host Docker, inizia con:

docker ps --format 'table {{.Names}}\t{{.Image}}\t{{.Status}}'
docker images | grep onlyoffice

Determina se l'istanza è stata avviata con docker runDocker Compose, un pannello di controllo o un altro livello di orchestrazione. Devi modificare la configurazione di origine che crea il container. Modificare un file generato all'interno del container non è una soluzione permanente.

Nello specifico per Docker, ONLYOFFICE consiglia agli amministratori di utilizzare le variabili d'ambiente anziché modificarle manualmente /etc/onlyoffice/documentserver/local.json. Se si modificano i valori JWT direttamente in quel file, il processo di avvio di Docker può ripristinarli o rigenerarli al riavvio del container.

2. Genera un segreto forte e conservalo in modo sicuro

Terminale che mostra un comando OpenSSL per la creazione di una chiave segreta casuale
Genera il segreto JWT su un sistema affidabile e memorizzalo nel tuo flusso di lavoro di gestione dei segreti, anziché incorporarlo nel codice sorgente pubblico.

Un comodo comando da shell è:

openssl rand -hex 32

Questo genera 32 byte casuali rappresentati da 64 caratteri esadecimali. ONLYOFFICE non richiede questo formato preciso; il requisito fondamentale è che entrambe le parti condividano lo stesso segreto e che sia difficile da indovinare.

Trattalo JWT_SECRETcome una password o una credenziale API:

  • Non caricarlo su un repository Git pubblico.
  • Non inserirlo nel codice JavaScript frontend inviato ai browser.
  • Limita l'accesso al file di ambiente di Compose o all'archivio segreto che lo contiene.
  • Utilizza una chiave segreta diversa per ambienti separati come quello di produzione e quello di staging.

La documentazione sulla firma di ONLYOFFICE avverte esplicitamente che la firma del token deve avvenire sul server perché qualsiasi codice lato browser che contenga il segreto lo espone agli utenti. Gli esempi ufficiali utilizzano HMAC-SHA256 ( HS256). Vedi la documentazione sulla firma JWT di ONLYOFFICE .

3. Configurare JWT in Docker Compose

L'editor di Docker Compose mostra le variabili d'ambiente JWT_ENABLED, JWT_SECRET, JWT_HEADER e JWT_IN_BODY per onlyoffice/documentserver
Imposta un segreto JWT persistente nella definizione del container in modo che rimanga attivo anche dopo la ricreazione del container e il riavvio dell'host.

Un servizio Compose minimo può includere:

services:
  documentserver:
    image: onlyoffice/documentserver:latest
    restart: unless-stopped
    environment:
      JWT_ENABLED: "true"
      JWT_SECRET: "${ONLYOFFICE_JWT_SECRET}"
      JWT_HEADER: "Authorization"
      JWT_IN_BODY: "false"
    ports:
      - "8080:80"

Se possibile, conserva il segreto vero e proprio al di fuori del file Compose. Ad esempio, inseriscilo in un .envfile con accesso limitato:

ONLYOFFICE_JWT_SECRET=replace_with_your_random_secret

Assicurati quindi che il file sia escluso dal controllo di versione e che sia leggibile solo dagli amministratori o dall'account di servizio che ne ha bisogno.

Il repository ufficiale ONLYOFFICE Docker-DocumentServer documenta JWT_ENABLED, JWT_SECRET, JWT_HEADER, e JWT_IN_BODY. Il codice di avvio Docker corrente abilita per impostazione predefinita la convalida JWT, utilizza Authorizationcome intestazione predefinita e genera un segreto casuale quando non ne viene fornito uno esplicito.

4. Ricrea il contenitore in modo che il nuovo ambiente venga applicato

Terminale Ubuntu che mostra docker compose up -d che ricrea e avvia il container ONLYOFFICE Document Server
La modifica di un valore di ambiente di Compose richiede la ricreazione del contenitore del server documenti con la nuova configurazione.

Per comporre:

docker compose up -d --force-recreate
docker compose ps

Per un container originariamente creato con docker run, la guida ufficiale JWT indica agli amministratori di arrestare e rimuovere il vecchio container, quindi di crearne uno nuovo con le variabili d'ambiente JWT. Non rimuovere volumi persistenti o dati montati tramite bind durante questa operazione.

È anche possibile ispezionare l'ambiente del container in esecuzione senza stampare il segreto stesso:

docker inspect onlyoffice-documentserver \
  --format '{{range .Config.Env}}{{println .}}{{end}}' \
  | grep '^JWT_' \
  | sed 's/^JWT_SECRET=.*/JWT_SECRET=[REDACTED]/'

Se il nome del contenitore è diverso, sostituirlo onlyoffice-documentserverdi conseguenza.

5. Configura lo stesso segreto nell'integrazione

Questa è la parte che più spesso viene trascurata. Abilitare JWT su ONLYOFFICE Docs senza configurare la gestione dei documenti causa il rifiuto delle richieste dell'editor. Il connettore o l'applicazione personalizzata devono firmare le richieste con esattamente lo stesso segreto.

Esempio di Nextcloud

Nelle impostazioni di ONLYOFFICE per Nextcloud, inserisci la stessa chiave segreta utilizzata dal Document Server. Anche il nome dell'intestazione deve corrispondere. La documentazione attuale di ONLYOFFICE sull'integrazione con Nextcloud elenca jwt_secrete jwt_headercome impostazioni del connettore, con Authorizationcome intestazione predefinita. Consulta la documentazione ufficiale del connettore Nextcloud .

Se il connettore dispone di un campo etichettato "Chiave segreta", "Segreto JWT" o simile, non generare un secondo segreto indipendente in quel campo. Copia lo stesso valore del segreto.

6. Per un'integrazione personalizzata, firmare la configurazione completa dell'editor sul server.

Editor di codice che mostra un esempio Node.js lato server che firma la configurazione di un documento ONLYOFFICE con un JWT HS256.
Un'integrazione personalizzata dovrebbe generare il JWT sul proprio backend utilizzando lo stesso segreto configurato nella documentazione di ONLYOFFICE; non esporre mai tale segreto nel codice del browser.

Per un'applicazione personalizzata, crea prima la configurazione dell'editor, firma tale configurazione sul backend, quindi assegna il JWT risultante alla tokenproprietà di livello superiore.

Esempio con Node.js:

import jwt from "jsonwebtoken";

const config = {
  documentType: "word",
  document: {
    fileType: "docx",
    key: "document-2026-001",
    title: "Project Plan.docx",
    url: "https://files.example.com/project-plan.docx"
  },
  editorConfig: {
    callbackUrl: "https://app.example.com/onlyoffice/callback"
  }
};

config.token = jwt.sign(config, process.env.ONLYOFFICE_JWT_SECRET, {
  algorithm: "HS256"
});

La documentazione di ONLYOFFICE relativa alla firma del browser afferma che il payload del token per l'apertura di un file deve avere la stessa struttura della configurazione dell'editor. Dalla versione 7.1, l'insieme dei parametri coinvolti nella convalida è rigorosamente regolamentato per questa operazione, pertanto la firma di una struttura obsoleta o parziale è una causa comune di errori. Vedere Firma del token del browser .

La configurazione risultante passata DocsAPI.DocEditorcontiene il token:

new DocsAPI.DocEditor("placeholder", config);

La documentazione ufficiale dell'API definisce config.tokenla firma crittografata utilizzata da ONLYOFFICE Docs per convalidare la configurazione dell'editor.

7. Comprendere la differenza tra i token di intestazione e quelli del corpo della pagina.

In ONLYOFFICE, JWT non si limita alla configurazione dell'editor del browser. Viene utilizzato anche per le richieste da servizio a servizio, come il traffico di comandi, conversioni e callback.

TrafficoDove viene utilizzato il tokenPunto chiave
Inizializzazione dell'editor del browserconfig.tokenIl payload del token deve corrispondere alla configurazione dell'editor firmato.
Richieste di assistenza in arrivoCorpo o intestazionePer le richieste POST, i token del corpo evitano i limiti di dimensione dell'intestazione HTTP.
richieste GETIntestazioneIl token del corpo non è applicabile al metodo GET.
Richiamate in uscitaCorpo/testata secondo la configurazioneLa tua integrazione deve convalidare il token utilizzando il segreto condiviso.

ONLYOFFICE supporta i token di richiesta sia nel corpo che nell'intestazione. Le sue FAQ sulla sicurezza indicano che le intestazioni possono raggiungere i limiti di lunghezza specifici del server e pertanto raccomandano l'utilizzo di token nel corpo per le richieste in entrata applicabili. A partire dalla versione 7.1 della documentazione, un token nel corpo in entrata ha la precedenza se presente; in caso contrario, viene utilizzato il token nell'intestazione. Il lato in uscita può inviare entrambi. Consultare la documentazione sui token di richiesta di ONLYOFFICE .

La variabile Docker JWT_IN_BODYha un valore predefinito di false, quindi non abilitarla solo perché esiste. Modificala solo se la tua integrazione è progettata per inviare e convalidare i token del corpo in modo coerente.

8. Esegui un test con una richiesta reale dell'editor.

L'editor di documenti ONLYOFFICE si apre in un browser dopo la configurazione JWT, utilizzato per verificare che il caricamento del documento autenticato abbia esito positivo.
Testare il percorso di integrazione esatto che gli utenti utilizzeranno: aprire un documento, modificarlo e verificare il comportamento di salvataggio/richiamo, anziché testare solo la pagina di destinazione del server dei documenti.

Una sequenza di validazione utile è:

  1. Apri un documento tramite la tua integrazione reale.
  2. Verifica che l'editor si carichi senza errori di token.
  3. Apporta una piccola modifica.
  4. Chiudi l'editor o avvia il normale processo di salvataggio.
  5. Verificare che l'applicazione di archiviazione riceva e accetti la callback.

Una pagina di benvenuto del Document Server visualizzata correttamente non garantisce che JWT sia configurato correttamente tra due applicazioni. Gli errori JWT spesso si verificano solo quando l'integrazione invia la configurazione dell'editor, il comando, la richiesta di conversione o la callback.

La panoramica ufficiale sulla sicurezza spiega il comportamento previsto: ONLYOFFICE convalida un token e utilizza i valori del payload firmato; se il token è mancante o non valido quando è richiesta la convalida, la richiesta viene rifiutata. Consultare la panoramica sulla sicurezza nella documentazione di ONLYOFFICE .

9. Controlla lo stato e i log del JWT quando l'autenticazione fallisce

Terminale che mostra i messaggi di registro relativi a ONLYOFFICE JWT per un token assente, una firma non valida e una richiesta autorizzata
Quando un documento non si apre o non viene salvato, prima di modificare impostazioni di rete non correlate, controlla i log del server documenti per individuare eventuali errori relativi a token mancanti o convalida della firma.

Il codice di avvio Docker corrente indirizza gli amministratori all'helper di stato JWT. Con il nome del container corretto, eseguire:

docker exec onlyoffice-documentserver \
  sudo documentserver-jwt-status.sh

È inoltre possibile consultare i registri:

docker logs --tail 200 onlyoffice-documentserver
docker exec onlyoffice-documentserver \
  find /var/log/onlyoffice/documentserver -type f -maxdepth 3 -print

Se l'integrazione fallisce immediatamente dopo la modifica del segreto, confronta questi elementi in ordine:

  • È JWT_ENABLEDeffettivamente abilitato nel container ricreato?
  • L'integrazione utilizza esattamente lo stesso segreto, comprese le maiuscole e la punteggiatura?
  • Il connettore utilizza lo stesso nome dell'intestazione JWT?
  • Nel caso di un editor personalizzato, stai firmando lo stesso oggetto di configurazione che invii al browser?
  • Anche le callback e le richieste di comando vengono firmate e validate come richiesto?
  • Un segreto memorizzato in un file di shell o Compose è stato troncato, interpretato o sostituito dall'espansione di una variabile d'ambiente?

Schemi di guasto comuni

“Token non valido” o “Firma non valida”

La causa più probabile è una mancata corrispondenza della chiave segreta o un token firmato su un payload diverso da quello della richiesta in fase di convalida. Rigenerare il token dopo ogni modifica rilevante alla configurazione. Non riutilizzare i token di esempio presenti nella documentazione; tali esempi sono firmati con chiavi segrete dimostrative e non sono validi per il proprio server.

Funziona finché Docker non si riavvia

Questo di solito significa che il deployment si basava sul segreto JWT generato automaticamente. ONLYOFFICE avverte esplicitamente che un segreto casuale può essere rigenerato dopo il riavvio o la ricreazione del container. Impostalo JWT_SECRETmanualmente e inserisci lo stesso valore nell'integrazione.

Nextcloud mostra un errore di connessione o del token

Innanzitutto, controlla il segreto e l'intestazione su entrambi i lati. La documentazione Nextcloud di ONLYOFFICE richiede che il connettore jwt_headercorrisponda all'intestazione configurata in Document Server. Il valore predefinito corrente è Authorization.

Una richiesta firmata di grandi dimensioni restituisce un errore HTTP

Verifica se il JWT viene inviato in un'intestazione che supera il limite di dimensione dell'intestazione del proxy o del server web. Le FAQ sulla sicurezza di ONLYOFFICE spiegano che questo è uno dei motivi per cui i token nel corpo della richiesta sono preferibili per le richieste POST applicabili.

Rotazione sicura del segreto JWT

La rotazione dei segreti JWT deve essere coordinata. Non c'è alcun vantaggio nel cambiare solo il Document Server mentre il connettore continua a firmare con il vecchio segreto.

Per una semplice implementazione a istanza singola:

  1. Genera il nuovo segreto e memorizzalo in modo sicuro.
  2. Pianifica una breve finestra di manutenzione se gli editor attivi potrebbero essere interessati.
  3. Aggiorna il segreto dell'integrazione e quello del server dei documenti JWT_SECRETcome un'unica modifica coordinata.
  4. Ricreare il contenitore del server dei documenti.
  5. Apri, modifica e salva un documento di prova.
  6. Prima di ripristinare il normale utilizzo del servizio, verificare che le callback funzionino correttamente.

Per più istanze di Document Server dietro un bilanciatore di carico, tutte le istanze che gestiscono la stessa integrazione necessitano di una configurazione JWT compatibile durante la modifica. Pianifica l'implementazione anziché ruotare un nodo ad hoc.

Lista di controllo della produzione

  • Segreto persistente: impostalo JWT_SECRETesplicitamente; non fare affidamento sul valore generato casualmente.
  • Lo stesso segreto ovunque: il Document Server e l'integrazione devono condividere lo stesso valore.
  • Firma lato server: non esporre mai il segreto nel codice del frontend/browser.
  • HS256: utilizzare l'approccio HMAC-SHA256 mostrato negli esempi di codice ufficiali di ONLYOFFICE.
  • Accordo sull'intestazione: se un connettore invia JWT tramite un'intestazione denominata, tale nome deve corrispondere a quello del Document Server.
  • Ricreazione del container: le modifiche all'ambiente Docker richiedono la ricreazione del container.
  • Test di integrazione reale: apertura, modifica, salvataggio e verifica del comportamento della funzione di callback.
  • Archiviazione segreta: tieni il segreto lontano da repository e registri pubblici.
  • Rotazione controllata: aggiornare entrambi i lati contemporaneamente e verificare prima di terminare la manutenzione.

In conclusione

Per un'installazione ONLYOFFICE basata su Docker, la configurazione persistente è semplice: generare un segreto robusto, impostarlo JWT_ENABLED=truetramite JWT_SECRETle variabili d'ambiente del container, ricreare il container e configurare esattamente lo stesso segreto nel connettore o nel backend. Le integrazioni personalizzate devono firmare la configurazione dell'editor e le richieste di servizio sul server con HS256, mai nel codice del browser.

Se JWT smette improvvisamente di funzionare dopo un riavvio, verifica se il segreto è mai stato reso persistente. Se il problema si verifica immediatamente dopo una modifica della configurazione, confronta il segreto, l'intestazione e il payload firmato prima di cercare altrove. Questi tre controlli risolvono la maggior parte degli errori di configurazione di JWT senza compromettere l'autenticazione.

Lascia un commento

Come spostare un'immagine in Microsoft Word

Come spostare un'immagine in Microsoft Word

Scopri come trascinare un'immagine in Word, scegliere l'a capo automatico del testo, mantenerla all'interno di un paragrafo o fissarla sulla pagina e risolvere i problemi relativi alle immagini che non si spostano.

Come inserire una casella di controllo in Excel: due metodi semplici

Come inserire una casella di controllo in Excel: due metodi semplici

Scopri come inserire una casella di controllo in Excel con lo strumento "In-Cell", contare gli elementi selezionati con le formule o aggiungere un controllo modulo collegato nelle versioni desktop meno recenti.

Come inserire automaticamente le lettere in Excel: dalla A alla Z e oltre

Come inserire automaticamente le lettere in Excel: dalla A alla Z e oltre

Genera lettere dalla A alla Z, lettere minuscole o etichette oltre la Z in Excel utilizzando una formula con maniglia di riempimento, SEQUENZA o un elenco personalizzato riutilizzabile.

Come barrare il testo in Excel: scorciatoie e metodi passo passo

Come barrare il testo in Excel: scorciatoie e metodi passo passo

Scopri come barrare il testo in Excel su Windows, Mac e sul web, formattare solo una parte di una cella e rimuovere la linea senza cancellarne il valore.

Cos'è Microsoft Access? Come funzionano i suoi strumenti di database?

Cos'è Microsoft Access? Come funzionano i suoi strumenti di database?

Microsoft Access è un'applicazione di database per Windows che consente di archiviare record correlati, creare query, moduli di immissione dati e generare report. Scopri come funziona e quando è utile.

Importazione ed esportazione di Office Outlook 2010: spostare i dati con un file PST

Importazione ed esportazione di Office Outlook 2010: spostare i dati con un file PST

Scopri come importare un file PST in Outlook 2010 o esportare posta, contatti, calendario e attività. Segui i menu corretti ed evita di perdere cartelle o di creare file duplicati.

Come modificare l'altezza e la larghezza della griglia in Word 2010

Come modificare l'altezza e la larghezza della griglia in Word 2010

Scopri come regolare l'altezza e la larghezza delle linee della griglia in Word 2010, modificare la frequenza delle linee visibili e impostare la spaziatura orizzontale e verticale della griglia di disegno sottostante.

Recuperare la password di un file PST di Outlook con Nucleus Kernel

Recuperare la password di un file PST di Outlook con Nucleus Kernel

Recupera una password dimenticata di un file PST di Outlook seguendo i passaggi descritti da Kernel, che includono l'identificazione del file corretto, la creazione di un backup e la verifica dei limiti dello strumento.

Come inserire una pagina web attiva in una diapositiva di PowerPoint

Come inserire una pagina web attiva in una diapositiva di PowerPoint

Utilizza il componente aggiuntivo LiveWeb per inserire un sito web in una diapositiva di PowerPoint, impostarne le dimensioni e il comportamento di aggiornamento e verificarne la compatibilità prima della presentazione.

Word 2010: Inserire caratteri in cerchi e altre forme

Word 2010: Inserire caratteri in cerchi e altre forme

Aggiungi il comando "Racchiudi caratteri" di Word 2010 alla barra di accesso rapido, quindi vai a capo automaticamente di una lettera o di un breve testo utilizzando una delle forme disponibili.