Come appare il messaggio
OneLogin_Saml2_ValidationError: Invalid audience for this Response (expected 'https://cloud.example.com/apps/user_saml/saml/metadata', got 'https://cloud.example.com')Cause frequenti
- L'Entity ID (audience) configurato nell'IdP è diverso da quello del service provider, spesso per una barra finale,
httpcontrohttpso l'URL dei metadati contro un nome semplice. - L'applicazione nell'IdP è stata creata per un'altra app o ambiente, ad esempio test al posto di produzione, e mantiene il vecchio valore.
- Il service provider costruisce il suo Entity ID dall'URL della richiesta e dietro un reverse proxy quell'URL è diverso da quello pubblico.
- I metadati dell'IdP sono stati importati prima che l'Entity ID cambiasse e non sono mai stati aggiornati.
Verifica
- Quale audience porta la response? (metti la response decodificata in un file)
base64 -d saml-response.b64 | xmllint --format - | grep -i -A2 Audience - Quale Entity ID pubblica il service provider?
curl -s https://cloud.example.com/index.php/apps/user_saml/saml/metadata | grep -o 'entityID="[^"]*"' - Cosa c'è nelle impostazioni SAML di Nextcloud?
- Nextcloud conosce il suo protocollo pubblico?
sudo -u www-data php occ config:system:get overwriteprotocol
Soluzione
- Scegli un Entity ID esatto e rendi uguali le due parti carattere per carattere, comprese maiuscole e barra finale.
- Inserisci quel valore come audience o Entity ID dell'applicazione nell'IdP e come Entity ID del service provider nell'app.
- Dietro un proxy imposta
occ config:system:set overwriteprotocol --value=httpse l'host giusto, così l'app costruisce l'indirizzo pubblico. - Dopo ogni modifica reimporta o risalva i metadati dell'IdP e quelli del service provider.
- Accedi di nuovo in una finestra privata e decodifica una nuova response per verificare che l'audience ora coincida.
Domande frequenti
È lo stesso di un errore di sfasamento dell'orologio?
No. Un errore di orario mostra NotBefore o NotOnOrAfter e riguarda il tempo. Invalid audience riguarda solo i nomi, e gli orologi possono essere perfetti.
L'Entity ID deve essere l'URL dei metadati?
Può esserlo, se entrambe le parti usano lo stesso. Molti IdP precompilano l'URL dei metadati, altri usano un nome semplice o un URN. Conta che le due parti abbiano la stessa stringa.