hannibalsmith
Goto Top

Nginx-pfad für bestimmte IP whitelisten (iframe)

Hallo zusammen,

ich habe einen Dienst, welcher mittels nginx-Reverse-Proxy über einen Pfad erreichbar gemacht wird (https://beispiel.de/pfad)
Nun möchte ich jedoch keinen direkten Zugriff erlauben. Das wäre ja kein Problem mittels
deny all;
.

Allerdings möchte ich die Applikation mittels iframe oder ähnlichem innerhalb einer anderen Website anzeigen lassen, dabei jedoch auch ausschließlich von dieser Webseite.
Da kam mir
X-Frame-Options
bzw
Content-Security-Policy: frame-ancestors
in den Sinn, dies würde jedoch den generellen Zugriff nicht blockieren.

Eine Passwortabfrage möchte ich nicht einbauen, da das iframe bereits in einer passwortgesicherten Anwendung eingebaut werden soll und ich gerne vermeiden würde, dass der Nutzer zweimal ein Passwort eingeben muss.

Gibt es überhaupt eine Möglichkeit, das umzusetzen?

Content-ID: 1291205500

Url: https://administrator.de/contentid/1291205500

Ausgedruckt am: 22.11.2024 um 14:11 Uhr

149569
149569 22.09.2021 aktualisiert um 17:36:23 Uhr
Goto Top
Du könntest eine Passthru-Authentifizierung zur Seite machen die im iFrame geladen wird. Also bspw. der Seite im iFrame eine Session-ID über URL Parameter mitgeben. Die Seite des iFrame prüft dann die Session-ID auf Gültigkeit und lässt nur gültige User mit aktiver Session rein.
Musst dann halt die aktuellen Session-IDs mit der vorgeschalteten Seite teilen/aktuell halten.
HannibalSmith
HannibalSmith 23.09.2021 um 09:08:11 Uhr
Goto Top
Zitat von @149569:

Du könntest eine Passthru-Authentifizierung zur Seite machen die im iFrame geladen wird. Also bspw. der Seite im iFrame eine Session-ID über URL Parameter mitgeben. Die Seite des iFrame prüft dann die Session-ID auf Gültigkeit und lässt nur gültige User mit aktiver Session rein.
Musst dann halt die aktuellen Session-IDs mit der vorgeschalteten Seite teilen/aktuell halten.

Danke für den Vorschlag.
Aber kann das nginx an sich? Auf die Anwendung, die da läuft, habe ich leider keinen Einfluss.
149569
149569 23.09.2021 aktualisiert um 11:37:23 Uhr
Goto Top
Zitat von @HannibalSmith:

Zitat von @149569:

Du könntest eine Passthru-Authentifizierung zur Seite machen die im iFrame geladen wird. Also bspw. der Seite im iFrame eine Session-ID über URL Parameter mitgeben. Die Seite des iFrame prüft dann die Session-ID auf Gültigkeit und lässt nur gültige User mit aktiver Session rein.
Musst dann halt die aktuellen Session-IDs mit der vorgeschalteten Seite teilen/aktuell halten.

Danke für den Vorschlag.
Aber kann das nginx an sich? Auf die Anwendung, die da läuft, habe ich leider keinen Einfluss.

Du kanns die Basic Auth Header auch weiterleiten, die Seite dahinter muss natürlich auch eine Basic Auth anfordern und die User entsprechend dort auch hinterlegt sein.
proxy_pass_request_headers on;
proxy_pass_header       Authorization;
HannibalSmith
HannibalSmith 23.09.2021 um 13:25:58 Uhr
Goto Top
Zitat von @149569:

Zitat von @HannibalSmith:

Zitat von @149569:

Du könntest eine Passthru-Authentifizierung zur Seite machen die im iFrame geladen wird. Also bspw. der Seite im iFrame eine Session-ID über URL Parameter mitgeben. Die Seite des iFrame prüft dann die Session-ID auf Gültigkeit und lässt nur gültige User mit aktiver Session rein.
Musst dann halt die aktuellen Session-IDs mit der vorgeschalteten Seite teilen/aktuell halten.

Danke für den Vorschlag.
Aber kann das nginx an sich? Auf die Anwendung, die da läuft, habe ich leider keinen Einfluss.

Du kanns die Basic Auth Header auch weiterleiten, die Seite dahinter muss natürlich auch eine Basic Auth anfordern und die User entsprechend dort auch hinterlegt sein.
> proxy_pass_request_headers on;
> proxy_pass_header       Authorization;
> 

Da die Seite, die den iframe einbindet, in einer Nextcloud-Installation liegt, kann ich hier schlecht die Logins modifizieren.
Wie leite ich die Header denn weiter? Bei dem iframe habe ich nur Einfluss auf die URL.
149569
149569 23.09.2021 aktualisiert um 14:23:26 Uhr
Goto Top
Zitat von @HannibalSmith:
Wie leite ich die Header denn weiter? Bei dem iframe habe ich nur Einfluss auf die URL.
Macht der Proxy automatisch beim Zugriff. Btw. iFrame ist sowas von "old" und auch deprecated, und auch schon lange nicht mehr die empfohlene Methode, da gibt es inzwischen bessere Methoden ...
HannibalSmith
HannibalSmith 23.09.2021 um 15:02:07 Uhr
Goto Top
Zitat von @149569:

Zitat von @HannibalSmith:
Wie leite ich die Header denn weiter? Bei dem iframe habe ich nur Einfluss auf die URL.
Macht der Proxy automatisch beim Zugriff. Btw. iFrame ist sowas von "old" und auch deprecated, und auch schon lange nicht mehr die empfohlene Methode, da gibt es inzwischen bessere Methoden ...

Also müsste es reichen die beiden Zeilen in die nginx-conf zu packen und dann rennt das Ding?

Bzgl. iframe: Ich weiß ich weiß, aber nextcloud bietet ein Modul wie man eine externe Seite intern einbinden kann und das läuft nun mal leider mittels iframe... ärgerlich, aber hilft nichts.
149569
149569 23.09.2021 aktualisiert um 15:06:46 Uhr
Goto Top
Zitat von @HannibalSmith:
Also müsste es reichen die beiden Zeilen in die nginx-conf zu packen und dann rennt das Ding?
Wie gesagt das Backend dahinter muss was mit den Basic-Auth Zugangsdaten der vorgeschalteten Seite (die die den iFrame enthält)anfangen können sonst wird das nichts.
HannibalSmith
HannibalSmith 23.09.2021 aktualisiert um 15:18:55 Uhr
Goto Top
Zitat von @149569:

Zitat von @HannibalSmith:
Also müsste es reichen die beiden Zeilen in die nginx-conf zu packen und dann rennt das Ding?
Wie gesagt das Backend dahinter muss was mit den Basic-Auth Zugangsdaten der vorgeschalteten Seite (die die den iFrame enthält)anfangen können sonst wird das nichts.

Dann bringt mir die Möglichkeit leider nichts, wie vorher geschrieben habe ich auf die Anwendung bzw deren Backend keinen Einfluss. Kennst du vielleicht eine andere Möglichkeit?
149569
149569 23.09.2021 aktualisiert um 16:08:46 Uhr
Goto Top
Zitat von @HannibalSmith:
Dann bringt mir die Möglichkeit leider nichts, wie vorher geschrieben habe ich auf die Anwendung bzw deren Backend keinen Einfluss. Kennst du vielleicht eine andere Möglichkeit?
Sehe ich beim guten Willen nicht. Das Absichern geht dann so nicht wie du es vorhast wenn du gar keinen Einfluss auf das dahinterliegende Backend hast.
HannibalSmith
HannibalSmith 23.09.2021 um 16:59:58 Uhr
Goto Top
Zitat von @149569:

Zitat von @HannibalSmith:
Dann bringt mir die Möglichkeit leider nichts, wie vorher geschrieben habe ich auf die Anwendung bzw deren Backend keinen Einfluss. Kennst du vielleicht eine andere Möglichkeit?
Sehe ich beim guten Willen nicht. Das Absichern geht dann so nicht wie du es vorhast wenn du gar keinen Einfluss auf das dahinterliegende Backend hast.

Alles klar - Danke trotzdem!