Andy: Serverweiter Zugriffsschutz

Hallo!

Folgende Problematik möchte ich umsetzen:
Auf meinem Server, der ganz öffentlich im Internet erreichbar ist, nennen wir ihn also domain.de :), sind verschiedene Projekte in Verzeichnissen untergebracht.

Mit http://domain.de/ komme ich also auf die Startseite. Sämtliche Projekte sind in Verzeichnissen darunter angeordnet, z.B.: http://domain.de/PROJEKT_ABC/

Momentan ist der Schutz so, dass es einfach durch "Security through Obscurity" läuft. Da der Server dicht ist und nur auf perfekte Groß- / Kleinschreibung reagiert, kommt man auf ein Projekt nur, wenn man es so eingibt wie es halt geschrieben wird.

Leider will ich mich nicht darauf verlassen. Ich möchte unter http://domain.de/ bzw. per https ein Loginskript auf PHP-Basis laufen lassen, damit sich Mitbenutzer erstmal authentifizieren müssen. Nun kann ich dem User ja eine Session oder einfach nur ein Cookie unterjubeln und er ist für seine Browsersitzung hinlänglich bekannt.

Nur wie bring ich jetzt dem Apachen bei, dass er die Projekte nur ausliefert, wenn einer angemeldet ist? Sprich, wenn der Browser immer ein Cookie mit entsprechenden Infos mitliefert?

Das Problem ist, das die Projekte komplett autark bleiben sollen, also wenn sie selber ne Session verwenden ist gut, wenn sie selber Cookies schreiben ist gut. Es soll egal sein, ob pures HTML oder PHP oder was auch immer.

Also kurz:
1. User geht auf http://domain.de/PROJEKT_ABC/ -> bekommt Zugriffsfehler 401
2. User geht auf https://domain.de/ und loggt sich ein
3. User geht auf http://domain.de/PROJEKT_ABC/ -> Zugriff
4. User macht seinen Browser zu und das Spiel geht von vorne los.

Hoffe, es ist einigermassen verständlich.

Danke schonmal!

Andy

  1. Hello out there!

    nennen wir ihn also domain.de :)

    Nein, das tun wir nicht. Die Domian könnte wirklich existieren (tut sie in dem Fall) und sich hinter derm URI unangenehmer oder gar verbotener Inhalt befinden.

    Für Beispiele ist eine der Domains example.net, example. org, example.com oder eine mit der TLD example verwenden [RFC2606], niemals einen Domainname selbst ausgedenken.

    Leider will ich mich nicht darauf verlassen.

    Wieso leider?

    Ich möchte unter http://domain.de/ bzw. per https ein Loginskript auf PHP-Basis laufen lassen,

    Wieso das? Wieso nicht einfach <http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz@title=Verzeichnisse und Dateien mit Passwort schützen>?

    See ya up the road,
    Gunnar

    --
    “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    1. Hallo Gunnar.

      nennen wir ihn also domain.de :)

      Nein, das tun wir nicht. Die Domian könnte wirklich existieren (tut sie in dem Fall) […]

      Stimmt.

      Einen schönen Montag noch.

      Gruß, Mathias

      --
      sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
      „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“
      [HTML Design Constraints: Logical Markup]
      1. Hello out there!

        Nein, das tun wir nicht. Die Domian könnte wirklich existieren (tut sie in dem Fall) […]

        Stimmt.

        Argl, das wird ja langsam zum running gag.

        Vielleicht denk ich beim nächsten copy & paste dran, den Tippfehler zu verbessern. Wahrscheinlich nicht.

        See ya up the road,
        Gunnar

        --
        “Remember, in the end, nobody wins unless everybody wins.” (Bruce Springsteen)
    2. Hallo!

      nennen wir ihn also domain.de :)

      Nein, das tun wir nicht. Die Domian könnte wirklich existieren (tut sie in dem Fall) und sich hinter derm URI unangenehmer oder gar verbotener Inhalt befinden.

      Für Beispiele ist eine der Domains example.net, example. org, example.com oder eine mit der TLD example verwenden [RFC2606], niemals einen Domainname selbst ausgedenken.

      Sorry! Ist mir leider entfallen gewesen, ich kenn die example-Domains. Aber ich hab mit domain angefangt und dann hat sich das durch das Posting ohne Nachdenken durchgezogen.

      Leider will ich mich nicht darauf verlassen.

      Wieso leider?

      Weil dieses Konzept spätestens bei mehreren Usern schief laufen muss,  wenn der eine nur das eine Projekt sehen soll, der andere aber nur ein anderes, aber der eine zum anderen sagt: "Hey geh mal auf .../PROJEKT_ABC".

      Ich möchte unter http://domain.de/ bzw. per https ein Loginskript auf PHP-Basis laufen lassen,

      Wieso das? Wieso nicht einfach <http://de.selfhtml.org/servercgi/server/htaccess.htm#verzeichnisschutz@title=Verzeichnisse und Dateien mit Passwort schützen>?

      Diese Möglichkeit fällt aus zwei Gründen unter dem Tisch:
      1. Was ist, wenn das Projekt selber eine htaccess-Schutz implementiert?!
      2. Ich möchte eine normale Loginseite und ich habe noch keinen Weg gefunden, dem Benutzer die Logindaten unterzuschieben. Das soll heißen, wie bringt man dem Client bei, dass er jetzt bei Logindaten hat für einen htaccess-Schutz?

      Gruß,
      Andy

      1. Hallo!

        Wieder mal das typische Beispiel, Zusammensch..ss wegen einer falschdurchdachten Formulierung, aber kein weiterer Eingang auf die Fragestellung.
        Na gut, warten wir darauf, dass der Thread wieder sinnloserweise ins Archiv rutscht und nachfolgenden eigentlich nichts bringt (außer natürlich den Hinweis auf htaccess).

        Gruß,
        Andy

      2. hi,

        Weil dieses Konzept spätestens bei mehreren Usern schief laufen muss,  wenn der eine nur das eine Projekt sehen soll, der andere aber nur ein anderes, aber der eine zum anderen sagt: "Hey geh mal auf .../PROJEKT_ABC".

        Warum nutzt du nicht einfach HTTP Auth?

        Da kannst du für unterschiedliche User ja auch unterschiedliche "Zugriffsrechte" vergeben, und ggf. sogar Gruppen bilden.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Hallo!

          Weil dieses Konzept spätestens bei mehreren Usern schief laufen muss,  wenn der eine nur das eine Projekt sehen soll, der andere aber nur ein anderes, aber der eine zum anderen sagt: "Hey geh mal auf .../PROJEKT_ABC".

          Warum nutzt du nicht einfach HTTP Auth?

          Siehe gleich das Vorposting unterer Absatz! :)
          Wobei ich das 2. blöd und unleserlich formuliert habe! :)
          Ich mein(t)e
          2. Ich möchte eine normale Loginseite und ich habe noch keinen Weg gefunden, dem Benutzer die Logindaten unterzuschieben. Das soll heißen, wie kann der Server die Logindaten für einen htaccess-Mechanismus zum Client bringen, ohne das der User es mitbekommt?

          Der Grund für 2. ist folgender: Ich möchte die gleichen Logindaten für die www-Seite, als auch für den Server selber haben.
          Hierfür habe ich folgende elegante Lösung gefunden: Passwort Prüfung in PHP mittels SSH
          Hat sich der User erstmal authentifiziert, könnte man ihm ja fürs Projektspezifische htaccess-Daten (z.B.: Username=ABC, Passwort=geheim) unterschieben, aber die Frage bleibt wie, vorallem das es der Benutzer nicht merkt?
          Oder eben, ob es andere Mechanismen gibt, die es ermöglichen nur den eingeloggten Benutzern den Blick auf die Unterverzeichnisse freizugeben ohne htaccess.

          Gruß,
          Andy

  2. Hallo!

    Und nachdem ich weiter recherchiert habe, fand ich doch die Lösung! :)
    Und sie heißt - Trommelwirbel... - mod_auth_cookie

    Dieses kleine feine Apachemodul schaut erst nach, ob ein Cookie mit den Zugangsdaten vorhanden sind, die man normalerweise eingeben müßte, wenn nicht kommt die ganz normale Nachfrage! Aber wenn ja, dann wird eben dieses verwendet!
    Das Ganze ist also wie geschaffen dafür eine normale Loginseite zu gestalten und dann dem User eben die Daten für Authentication unterzuschieben.

    Danke trotzdem,
    Andy