Zope - LDAP Problem

  • Erstmal vorneweg, ich habe abzolut keine Ahnung von LDAP, wenn ich also schwachsinn erzähle, nehmt es mir net übel ;)

    Also folgendes. In unserm Betrieb arbeiten wir mit Zope. Jetzt haben wir einen Kunden, bei dem sich die user Gemeinde immer über ein LDAP System anmeldet.

    Wir haben für diesen Kunden ein Portal erstellt, welches über Zope läuft. Der momentane Fall ist der, das sich die User, wie gesagt, über LDAP anmelden, wenn diese nun unser Portal aufrufen, müssen sie sich natürlich nochmal einloggen, auf Zope.

    Die Frage ist jetzt, ist es möglich das Zope prüft ob der User, der versucht das Portal zu öffnen, schon über LDAP authentifiziert ist und sich damit nicht neu anmelden muss (auf Zope), sondern direkt durchgelassen wird?

    Ist das technisch möglich, oder totaler Humbug???


    Danke für die Hilfe

  • Hallo,

    ist ohne Probleme möglich, die Frage ist der technische Aufwand.

    Dazu gegenfrage: laufen die Zope auf getrennten Servern? oder sogar in der selben Zope-Instanz? bei Letztigem ist es eigendlich nur eine Frage des normalerweise vorgeschalteten Apachen. Zope macht das quasi on the flight wenn sie über die gleiche base-url kommen.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • mhh also das sind schon 2 verschieden server, einmal der wo das LDAP verzeichnis liegt und dann der server wo Zope und das Portal liegen.

    Also irgendwie muss ja zope den user anhand irgendwas erkennen um dann, bei LDAP, abfragen zu können ob er schon dort authentifiziert wurde... wenn ich das richtig durchblicke.

  • Um ein wenig genauer zu werden, es handelt sich um eine fachhochschule. wo die studenten sich auf dem fachhochschul system anmelden, welche halt über LDAP gesteuert wird... Wir sind jetzt ein externer diesntleister die dieses Portal für die Studenten gemacht haben. Wir haben natürlich unsre eigenen zugangsdaten für die user fürs portal.

  • Ok, das der LDAP auf einem anderen Server läuft ist normal.

    bei den Portalinstanzen unter Zope auf einer Maschine, sogar einer Zope macht der automatisch eine Nutzerweiterleitung, sehr gut zu sehen wenn man die rechner per ip anspricht, weil dann definitif die base-url gleich ist.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Ich danke dir schonmal sehr für deine hilfe.... aber ich versteh kein wort :,(

    könntest du mir vieleicht sagen was genau ich machen muss damit das so funktioniert?

  • Nochmal in anderen Worten

    Wenn der User bereits durch LDAP authentifiziert wurde, soll auch das Portal ihn reinlassen. Ich weiß aber nicht wie das Portal sehen kann, ob dieser schon authentifiziert wurde.

  • Ok, Zope sichert seine aktiven Sessions entweder durch url, cookies oder form-parameter, diese werden von der aktiven Zope-Instanz immer gelesen wenn ein HTTP-Request kommt. Die normale Form der Nutzer ist via Cookie, also hat der Nutzer lokal auf seinem Rechner eine Datei die zu einem bestimmten Webserver gehört und dort zur SessionID gehört.

    Wenn jetzt auf dem gleichen Rechner mehrere Portale unter Zope laufen und er den rechner bzw. den Zope erkennt übernimmt er automatisch die SessionDaten ins andere Portal.

    mal an einem Beispiel:

    Server IP Plone/Portalinstanz
    http://www.domaine1.de 192.168.0.10 portal1
    http://www.domaine2.de 192.168.0.10 portal2

    wird Zope die beiden Rechner beim Aufruf über den Domainnamen die Session nicht übergeben können, da er auf das Cookie nicht zugreifen darf, kann. rufst du das portal1 via http://192.168.0.10:8080/portal1 auf und meldest dich per LDAP an und gehst dann per URL direkt auf http://192.168.0.10:8080/portal2 über nimmt er dir die Sessiondaten aufgrund der identischen Base-URL.

    Da das ein rein Internes Verhalten von Zope ist kann man das durch eine gute mod-rewrite regel eines Apachen auch für verschiedene Domainnamen ermöglichen.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • mhh ok, dank dir, wenn ich das richtig verstehe ist aber in deinem beispiel beides auf Zope.

    Wie und wo die sich genau über LDAP authentifizieren, weiß ich ehrlich gesagt nicht, aber was ich weiß ist, das das kein Zope Portal ist. Das heißt es sind nicht 2 Zope portale von denen ich spreche, sondern nur das portal von uns ist auf zope, das LDAP ding ist irgendwas andres.

    Sorry das ich mich vieleicht etwas umständlich ausdrücke, aber wie gesagt ich hab keine ahnung von LDAP und wie genau das bei denen aussieht wo sie sich über LDAP authentifizieren weiß ich auch nicht. Habe diese projekt vorn paar monaten übernommen und jetzt heißt es die wollen das so... mhh naja und jetzt bin ich hier :)

  • OK, dann für denn Fall:

    Grundlegendes: Unterscheidung LDAP (Nutzer-Datenbank) und Session-Daten:

    LDAP (Lightweight Directory Access Protocol) ist eine auf einer Datenbankbasierenden Nutzerverwaltung die eine Nutzer-ID (UID) und ein Password und viele weitere Attribute kennt. Aber ganz grundsätzlich gesprochen ist LDAP nur eine Datenbank.

    Sessiondaten sind zu einem bestimmten Nutzer gespeicherte Informationen die für die Dauer einer aktiven Verbindung bereitgehalten werden.

    Soweit zu den Begriffen. Jetzt der normale Ablauf:

    Beim Anmelden an ein Protal das die Nutzerverwaltung an LDAP delegiert hat, wird im Portal die Nutzerinformationen abgefragt, das Password gegen das im LDAP verglichen und dann entsprechend die Nutzung gestattet. Dazu wird in dem Moment des Anmeldens ein Session-Cookie erzeugt, das sich den Nutzer merkt der aktuell von dem Clientrechner auf das Portal zugreift. Dieses Cookie hat eine Lebenszeit innerhalb dieser Lebenszeit kann der Nutzer mit dem Portal interagieren ohne sich erneut authentifizieren zu müssen.

    Möchte man nun zwischen zwei Portalen wechseln muss man die Session übergeben. Dazu muss die Nutzer-ID in beiden Portalen vom gleichen LDAP kommen und die gleiche Form haben, z.B. UID.

    Das ganze nennt man SingleSignOn und ist auch gut dokumentiert für verschiedene System, man muss bloss wissen welche das sind.

    Einfach mal SingleSignOn + Servername (z.B. Zope, Apache, IIS, usw.) in google eingeben und du bekommst etliche Ergebnisse die dir helfen sollten.

    Gruss Pumukel

    Die beste Informationsquelle sind Leute, die versprochen haben, nichts weiterzuerzählen.

    Marcel Mart
    frz. Schriftsteller

  • Ahh super, das werd ich machen, danke dir!
    Auch für die ausführliche Erklärung ;)