So sieht die Meldung aus
OneLogin_Saml2_ValidationError: Invalid audience for this Response (expected 'https://cloud.example.com/apps/user_saml/saml/metadata', got 'https://cloud.example.com')Häufige Ursachen
- Die im IdP eingetragene Entity ID (Audience) weicht von der im Service Provider ab, oft durch einen Schrägstrich am Ende,
httpstatthttpsoder die Metadaten-URL statt eines einfachen Namens. - Die IdP-Anwendung wurde für eine andere App oder Umgebung angelegt, z. B. Test statt Produktion, und behält den alten Wert.
- Der Service Provider bildet seine Entity ID aus der Anfrage-URL, und hinter einem Reverse-Proxy weicht diese URL von der öffentlichen ab.
- Die IdP-Metadaten wurden importiert, bevor die Entity ID geändert wurde, und nie aktualisiert.
Prüfen
- Welche Audience trägt die Response? (decodierte Response in eine Datei legen)
base64 -d saml-response.b64 | xmllint --format - | grep -i -A2 Audience - Welche Entity ID veröffentlicht der Service Provider?
curl -s https://cloud.example.com/index.php/apps/user_saml/saml/metadata | grep -o 'entityID="[^"]*"' - Was steht in den SAML-Einstellungen von Nextcloud?
- Kennt Nextcloud sein öffentliches Protokoll?
sudo -u www-data php occ config:system:get overwriteprotocol
Lösung
- Eine genaue Entity ID wählen und beide Seiten Zeichen für Zeichen gleich machen, auch bei Groß-/Kleinschreibung und Schrägstrich am Ende.
- Diesen Wert als Audience oder Entity ID der Anwendung im IdP und als Entity ID des Service Providers in der App eintragen.
- Hinter einem Proxy
occ config:system:set overwriteprotocol --value=httpsund den richtigen Host setzen, damit die App die öffentliche Adresse bildet. - Nach jeder Änderung die IdP-Metadaten und die Service-Provider-Metadaten neu importieren oder speichern.
- In einem privaten Fenster neu anmelden und eine neue Response decodieren, um zu prüfen, dass die Audience jetzt passt.
Häufige Fragen
Ist das dasselbe wie ein Zeitabweichungsfehler?
Nein. Ein Zeitfehler zeigt NotBefore oder NotOnOrAfter und betrifft die Zeit. Invalid audience betrifft nur Namen, die Uhren können perfekt sein.
Muss die Entity ID die Metadaten-URL sein?
Sie kann es sein, wenn beide Seiten dasselbe nutzen. Viele IdPs füllen die URL der Metadaten vor, andere nutzen einen einfachen Namen oder einen URN. Entscheidend ist, dass beide Seiten dieselbe Zeichenkette tragen.