HTTP-Authenification via Joomla

Liebe/-r Experte/-in, :smile:

für ein Webprojekt brauche ich eine Lösung, die es regelt, dass nur in Joomla (Frontend) angemeldete User ein Video ansehen können. Wenn diese im Quelltext den Pfad herausbekommen, darf dieser nur funktionieren, wenn die User angemeldet sind. Das geht im Prinzip ja nur, wenn das Film-Verzeichnis HTTP-Geschützt ist.

Ich habe mit dem Script VidLok (http://extensions.joomla.org/extensions/tools/securi… ) experimentiert (sehr, sehr ausgiebig). Diese Lösung funktioniert mit KEINEM Flash-basierten Videoplayer den ich ausprobiert habe (und für Joomla habe ich alle durch, plus ein paar, die es nicht als Plugin gibt). Mit „AllVideo“ ginge es zwar, aber das bindet die MP4-Files (und um solche dreht es sich) ja direkt via Quicktime ein. Das hat den Schönheitsfehler, dass es keinen „Preloader“ gibt also die Videos erst loslaufen, wenn diese fertig geladen sind. Da ich aber LANGE Videos habe, ist das eine sehr schlechte Sache.
Da ich eigentlich einen Video-Player habe, den ich nehmen will, aber dieser (wie gesagt) nicht dieses weiterleiten der Video-Datei via PHP supportet, kam ich auf folgende IDee:

Ich könnte doch die Videos in ein htaccess geschütztes Verzeichnis legen, und mit dem User-Login (und dem logout) eine HTTP-Authentifikation kombinieren. Geht das? Mit einem Plugin/einer Komponente?
Sonstige Ideen? :smile:
Ich bin auf den URL-Schutz angewiesen! :frowning:

Viele Grüße

Florian

Lieber Florian,

sieht so aus, als ob der JOOMLA! Experte keinen Rat für Dich weiß :frowning:

Interne Datenzugriffe werden bei uns mit .htaccess geregelt. Kaufvideos mit VirtuMart. Hier erhält der „Käufer“ einen Zugangscode und kann sich das Produkt (Film oder Software) herunterladen und „offline“ ansehen. Für Deine Fragestellung (online Video nur nach erfolgreicher Anmeldung) kenne ich keine vernünftige Lösung; was nicht heißt, dass es gar keine gibt.

Vielleicht hilft dieser kleine Aufsatz weiter:
http://webdeveloper.franzis.de/php-5x/sicherheitstip…

mit freundlichen Grüßen
Hartmut

Hi,

bei diesem sehr speziellen Problem kann ich leider nicht wirklich weiterhelfen.

Zwei kleine Anregungen habe ich vielleicht:

  1. Es gibt ja Möglichkeiten die Dateien, die nicht über die URL aufgerufen werden dürfen in einem Pfad oberhalb des root-Verzeichnisses abzulegen, so dass nur über die Einbindung innerhalb einer Joomla-Seite darauf zugegriffen werden kann.

  2. Wahrscheinlich bist du schon viel weiter in deinem Testen aber könnte man nicht die mp4-Dateien in flv-Videos umwandeln und dann über AllVideo/jwPlayer die vidlock-Extension inkl. Pre-Loading hinbekommen.

Hoffe das bringt dich weiter. Zu 1. kann ich leider nicht viel mehr sagen, weiß aber das z.B. docman eine Funktion hat um so zu arbeiten…

Viel Erfolg,

Jan

Hallo Florian,

wenn ich Dich richtig verstehe, dürfen angemeldete User die URL zum Video raus lesen. Nur unangemeldete User nicht, richtig?

Nachteil von htaccess-geschützten Verzeichnissen:

  • Der User muss sein Login nochmals eingeben.
  • Der Flash-Player muss diese Daten ebenfalls erhalten.
  • Das Passwort dafür wird im Klartext übertragen (außer auf SSL-verschlüsselten Seiten).

huschi.

Hi!

Vielleicht hilft dieser kleine Aufsatz weiter:
http://webdeveloper.franzis.de/php-5x/sicherheitstip…

UMGEKEHRT bräuchte ich dass! Also, wenn ich im Frontend eingeloggt bin, sollte Joomla mich im Movie-Verzeichnis per Script einloggen…

Idee?

Danke und Gruß

FLorian

Moin!

  1. Es gibt ja Möglichkeiten die Dateien, die nicht über die
    URL aufgerufen werden dürfen in einem Pfad oberhalb des
    root-Verzeichnisses abzulegen, so dass nur über die Einbindung
    innerhalb einer Joomla-Seite darauf zugegriffen werden kann.

Das funktioniert doch nicht! Die Player brauchen eine erreichbare Adresse!

  1. Wahrscheinlich bist du schon viel weiter in deinem Testen
    aber könnte man nicht die mp4-Dateien in flv-Videos umwandeln
    und dann über AllVideo/jwPlayer die vidlock-Extension inkl.
    Pre-Loading hinbekommen.

Gleiches Problem, das Format ist quasi egal! Ich habe ja einen Player nehmen wollen, der auf mp4 optimiert ist.

Hoffe das bringt dich weiter. Zu 1. kann ich leider nicht viel
mehr sagen, weiß aber das z.B. docman eine Funktion hat um so
zu arbeiten…

1.= Docman ist VIEL zu aufgeblasen

2.) Docman will die Files selbst verwalten (kann keine bestehenden Files nehmen)

3.) Managed DocMan nur den Download, kann aber keinen Player füttern (habs versucht)

Danke und Gruß

Florian

Hi!

wenn ich Dich richtig verstehe, dürfen angemeldete User die
URL zum Video raus lesen. Nur unangemeldete User nicht,
richtig?

Jein!

Die Urls dürfen auch nur tun, wenn der User eingeloggt ist!

Nachteil von htaccess-geschützten Verzeichnissen:

  • Der User muss sein Login nochmals eingeben.

Inakzeptabel :frowning: leider!

  • Der Flash-Player muss diese Daten ebenfalls erhalten.

Kein Problem

  • Das Passwort dafür wird im Klartext übertragen (außer auf
    SSL-verschlüsselten Seiten).

Auch kein Problem!

Mann müsste die PW-Eingabe für das geschützte Verzeichnis per Script machen, wenn sich der User im Frontend anmeldet, geht das?

Danke & Gruß

Florian

Hallo Florian,

leider habe ich hierzu keine wirklich hilfreiche Idee. Sollte mir noch was einfallen, werde ich natürlich sofort antworten.

Viele Grüße

Frank

Hallo Florian,

Die Urls dürfen auch nur tun, wenn der User eingeloggt ist!

Damit bleibst Du bei Cookies.

  • Der Flash-Player muss diese Daten ebenfalls erhalten.

Kein Problem

Meistens schon. Denn dann müsste der Username und Passwort irgendwo im Klartext auftauchen.

Mann müsste die PW-Eingabe für das geschützte Verzeichnis per
Script machen, wenn sich der User im Frontend anmeldet, geht
das?

Nein. Denn der htaccess-Schutz funktioniert anders als eine Session-Verwaltung mit Cookies. (Siehe auch )
Auch wenn der Browser Dich nur einmal auffordert das Passwort einzugeben, so schickt er es dennoch bei jedem einzelnen Request an den Server.
Da Flash aber nicht über sondern durch den Browser kommuniziert, muss der Flashplayer dieses Passwort ebenfalls haben.

Zwei Möglichkeiten, die ich noch sehe:
a) ein PHP-Streaming-Script welches vorher die Cookies prüft und dann den Film streamt.
Nachteil: Hier könnten Grenzen in den PHP-Laufzeiten auftauchen.
b) Temporäre Links erstellen. Entweder mit Hilfe von mod_rewrite, Soft-Links, oder evtl. ein PHP-Script mit 302-Weiterleitung (nur wenn der Flashplayer es kann).
Oder ganz Hardcore: Der ganze Film wird umkopiert.
So wäre der Ablauf:
Bei einem Film-Request wird eine zufällige ID (z.B. per MD5) erstellt welche dann die URL bildet:
http://deine-domain/videos/1234567879.mp4
Zusätzlich wird eine der o.g. Lösungen umgesetzt um diesen Link auf den richtigen Film zeigen zu lassen.

Wiederrum ein anderes Script sorgt dafür, dass diese URL nach 15, 30, 60 Minuten (wie auch immer) wieder ungültig wird.

Nachteil:
Das ganze müsste sorgfältig ausprogrammiert werden.

huschi.

1 „Gefällt mir“

Moinsen!

Damit bleibst Du bei Cookies.

Jau, oder die Session von Joomla auslesen (vidlok macht das zB)

  • Der Flash-Player muss diese Daten ebenfalls erhalten.

Kein Problem

Meistens schon. Denn dann müsste der Username und Passwort
irgendwo im Klartext auftauchen.

So gesehen ja, ich wollte da die Anmeldung „silent“ also im HiGru machen… :smile:

a) ein PHP-Streaming-Script welches vorher die Cookies prüft
und dann den Film streamt.
Nachteil: Hier könnten Grenzen in den PHP-Laufzeiten
auftauchen.
b) Temporäre Links erstellen. Entweder mit Hilfe von
mod_rewrite, Soft-Links, oder evtl. ein PHP-Script mit
302-Weiterleitung (nur wenn der Flashplayer es kann).
Oder ganz Hardcore: Der ganze Film wird umkopiert.

Eine Kombi aus a + b wurde es dann!

So wäre der Ablauf:
Bei einem Film-Request wird eine zufällige ID (z.B. per MD5)
erstellt welche dann die URL bildet:
http://deine-domain/videos/1234567879.mp4
Zusätzlich wird eine der o.g. Lösungen umgesetzt um diesen
Link auf den richtigen Film zeigen zu lassen.

Wiederrum ein anderes Script sorgt dafür, dass diese URL nach
15, 30, 60 Minuten (wie auch immer) wieder ungültig wird.

Wir könnte das aussehen (nein, ich will kein fertiges Script von Dir :wink: )? Speziell den temporärem link in Verbindung mit PHP und Mod-Rewrite, dass kann ich mir nicht vorstellen… (Habe von Mod_Rewrite keine/fast keine Ahnung)

Vielen Dank für Deine schnelle Antwort und Hilfe!!!

Gruß

Florian

Sorry, dazu habe ich keine Idee.

Leider habe ich da keine mir bekannte Lösung, da es mit der htaccess Variante m.E. zu einer doppelten Authentifizierung käme, die für den Benutzer nicht von Vorteil währe.

Hallo Florian,

Wir könnte das aussehen (nein, ich will kein fertiges Script
von Dir :wink: )? Speziell den temporärem link in Verbindung mit
PHP und Mod-Rewrite, dass kann ich mir nicht vorstellen…

Bei einem Request auf eine Video-Page wird ein templ-Link erzeugt. Z.B. http://domain.tld/video/123456789.mp4
Im Verzeichnis /video/ liegt dann eine .htaccess-Datei welche die Rewrite-Regeln beherbergt.
Die Video-Page schreibt also eine neue RewriteRule dort rein, welche dafür sorgt, dass die URL gültig wird.

Ein anderes regelmäßig laufendes Script (z.B. per Cronjob oder auch gleich die index.php) prüft hin und wieder ob der ein oder andere Rewrite-Eintrag hinfällig ist und löscht ihn dann raus.
Größtes Problem: Das Zeitprotokoll.
Außerdem ist die Lösung fehleranfällig für parallele IO-Operationen.

Etwas einfacher und eleganter könnte man dies mit Soft-Links machen. (Linux voraus gesetzt!) Dann könnten die realen Videos auch in einem vollständig geschützten Verzeichnis liegen. Die abgelaufenen Links sind dann anhand ihres Alters erkennbar.

huschi.

Hallo Florian,

ich habe es meistens so gemacht, dass ich die Videos nicht als MP4-Dateien abgespielt habe, sondern vorher in FLV Dateien umgewandelt habe. Dann sind die Videos schlanker und laden schneller. Dafür gibt es verschiedene Konvertierungstools.
FLV Videos kannst du prima mit der Komponente AllVideo Reloaded einbinden. Und das nicht nur via Qicktime.
Wie meldest du die Nutzer über das Frontend an?
Wenn du das Video in einem geschützten Bereich abgelegt hast, dann sollte man diese - selbst man den Pfad heraus bekommt - nicht sehen können, da sich dann automatisch eine passwortgeschützte Seite öffnet. Wie hast du den geschützten Bereich angelegt?

Gruß
Uli

Leider kann ich Dir da nicht weiterhelfen. Viel Glück.