Bei der Nutzung von Mozilla Firefox kann es sein, dass Anwendungen wie Shrimp, Snapper oder OntoCommand nicht in der Lage sind, auf die FHIR-Ressourcen zuzugreifen. Bei Shrimp wird das Seitengerüst geladen, aber keine Inhalte angezeigt. Bei OntoCommand wird entweder eine leere Seite angezeigt oder die Anwendung lädt nicht. Dieses Verhalten tritt bei Nutzung von Chromium-basierten Browsern nicht auf.
Der Hintergrund dieses Verhaltens ist ein unterschiedlicher Umgang mit der Mutual TLS-Authentifizierung, die die SU-TermServ verwendet, in Verbindung mit dem Cross-Origin Resource-Sharing-Mechanismus (CORS) [Mozilla Developer Network].
Durch den CORS- soll sichergestellt werden, dass Frontends im Backend auf Ressourcen zugreifen können, die auf einem anderen Server gehostet werden. Dabei wird die Anfrage des Frontends an den Server gesendet, der die Ressourcen bereitstellt. Dieser Server prüft die Anfrage und entscheidet, ob die Anfrage erlaubt ist. Ist dies der Fall, wird die Antwort an das Frontend zurückgesendet. Die Anfrage wird nur dann erlaubt, wenn der Server die Anfrage als sicher einstuft. Dies wird durch die Überprüfung des Origin-Headers der Anfrage erreicht. Der Server prüft, ob der Wert des Origin-Headers in einer Liste von erlaubten Werten enthalten ist. Ist dies der Fall, wird die Anfrage erlaubt. Je nach Komplexität der Anfrage findet eine Preflight-Anfrage statt, bei der mit einer “vorgeschalteten” Anfrage mit dem OPTIONS-Verb geprüft wird, ob die eigentliche Anfrage erlaubt ist.
Für die Dienste der SU-TermServ existieren hier keine Einschränkungen, die Anfragen von anderen Servern verhindern.
In Verbindung mit mTLS kommt aber zu tragen, dass innerhalb des CORS-Mechanismus gemäß Spezifikation keine TLS-Zertifikate im Preflight-Request gesendet werden. Dies führt dazu, dass der Server die Anfrage ablehnt, da die Anfrage nicht als sicher eingestuft wird. Dieses Verhalten tritt bei Firefox auf, da Firefox die Spezifikation korrekt umsetzt. Chromium-basierte Browser hingegen senden die Zertifikate im Preflight-Request, was dazu führt, dass die Anfrage von unserem Server korrekt beantwortet wird.
Dazu kommt, dass Firefox auch nicht zuverlässig die Zertifikate im Hauptrequest sendet, wenn im Javascript-Code nicht eine entsprechende Einstellung vorgenommen wird. Da die Anwendungen Shrimp, Snapper und OntoCommand durch CSIRO entwickelt wurden, ist dies aktuell nicht der Fall, aber eine entsprechende Anpassung ist potentiell angedacht.
Durch einen Schalter innerhalb der Firefox-Konfiguration kann dieses Verhalten aber an Chromium angelehnt werden. Hierzu ist die Einstellung network.cors_preflight.allow_client_cert
auf true
zu setzen. Dies kann über die URL about:config
erreicht werden. Nach dem Setzen des Schalters muss Firefox neu gestartet werden. Diese Einstellung adressiert auch beide Probleme, sodass die Nutzung von Firefox danach ohne Einschränkungen möglich ist.
Wenn Sie die about:config
öffnen, erscheint eine Warnung:
Warnung beim Aufrufen der about:config
Bestätigen Sie die Warnung und suchen Sie dann nach preflight
. Die Einstellung network.cors_preflight.allow_client_cert
sollte auf false
stehen. Ändern Sie den Wert auf true
, indem Sie auf das Symbol in der Spalte Wert
klicken. Es sollte danach wie hier aussehen:
Warnung beim Aufrufen der about:config
Starten Sie Firefox dann neu. Zum Testen rufen Sie Shrimp auf, es sollte mindestens eine Zertifikatsabfrage erscheinen. Wenn Sie diese bestätigen, sollte Shrimp wie gewohnt funktionieren. Für die Einrichtung des Zertifikats sei auf den entsprechenden FAQ-Eintrag verwiesen.