Kasia: Problem mit Seitenweiterleitung mit vbs

Guten Morgen,

wir betreiben hier einige INTRAnetseiten in einer geschlossenen Domäne. Bevor die Frage nach dem Sinn von vbs kommt - hier wird nur der IE eingesetzt.

Mit dem nachstehenden vbscript soll anhand der Gruppenzugehörigkeit innerhalb der (LDAP-)Domäne auf eine entsprechende Seite weitergeleitet werden. Leider wird immer auf die "richtige Seite" weitergeleitet.

Kann mir jemand helfen.

Hier der vb-Script-Code

<html>
<head>
<title>Authentifizierung</title>

<script language="vbscript">
On Error Resume Next
'UserName des aktuellen Benutzers ermitteln
Set objWSHNetwork = CreateObject("WScript.Network")
'Gruppenmitgleidschaft prüfen
'Variable prüfen und bei "Falsch" weiterleiten auf Fehlerseite-Seite

If CheckUser("Forum_Mitglieder", objWSHNetwork.Username) = True then
   response.redirect "richtige_Seite.php"
' beziehungsweise folgende
   'document.location.href("richtige_Seite.php")
   'window.location.href("richtige_Seite.php")
   Else
      response.redirect "falsche_Seite.htm"
     End if
End if
WScript.quit

Function CheckUser(GroupName, UserName)
On Error Resume Next
Dim objComputer
Dim objGruppe
Set objComputer = GetObject("WinNT://Intra-Domaene")
Set objGruppe = objComputer.GetObject("group", GroupName)
Select Case Err
    Case -2147024843
        Wscript.Echo "Die Gruppe " & Gruppenname & " wurde nicht gefunden."
        Set objGruppe = Nothing
        Wscript.Quit
    Case 0
        Wscript.Echo "Die Abfrage wurde fehlerfrei ausgeführt."
    Case Else
        Wscript.Echo Err.Number & vbTab & Err.Description
End Select
Err.Clear
For Each objMitglied In objGruppe.Members
 If UserName = Mid(objMitglied.ADsPath, 13, Len(objMitglied.ADsPath) - 12) Then
  CheckUser = True
  Exit Function
 End If
Next
CheckUser = False
End Function
</script>

</HEAD>
</html>

Vorab Danke.

  1. Moin!

    wir betreiben hier einige INTRAnetseiten in einer geschlossenen Domäne. Bevor die Frage nach dem Sinn von vbs kommt - hier wird nur der IE eingesetzt.

    Ich muß aber dennoch diese Frage stellen, aber in einem anderen Zusammenhang:

    Wenn's um Benutzerauthentifizierung geht, warum löst du das im Client? Ich meine: Wenn nur diejenigen auf die richtige Seite dürfen, die da hingehören, du aber auf dem Server nicht verhinderst, dass auch die falschen dahingehen können - und du im Seitenquelltext sogar nachlesbar die Adresse mitlieferst, wo die richtigen hingehen sollen (so dass auch die falschen dort hingehen können) - dann hast du eigentlich erstmal ganz andere Sorgen als nur diese falsche Weiterleitung immer auf die richtige Seite, würde ich meinen.

    Auch deine anscheinende Verwirrung bei der Auswahl des Themengebiets deutet darauf hin. VBS ist ja nicht PHP - aber es könnte als serverseitige Skriptsprache zumindest Ähnlichkeiten mit PHP haben. Du setzt es in deinem Codeschnipsel aber nicht als PHP-Ersatz ein, sondern als Javascript-Ersatz, also clientseitig.

    Irgendwas paßt da also noch nicht wirklich zusammen. Vielleicht kannst du das noch etwas mehr erklären. Oder vielleicht helfen meine Gegenfragen schon bei der Erzielung von mehr Klarheit bei dir.

    Ansonsten müßte ich nämlich leider sagen: VBS - kenn ich leidlich, hab' ich aber keine Ahnung von deiner Konkreten LDAP-Anwendung.

    - Sven Rautenberg

    --
    "Love your nation - respect the others."
      • Sven Rautenberg

      Der LDAP-Dienst ist das "beliebte" Active Directory von MS.

      Der Quelltext ist nicht so sehr das Problem, muss jedenfalls im hiesigen INTRAnet nicht zwingend versteckt werden.

      Wie ich das Problem serverseitig löse würde nur über die in Windows möglichen NTFS-Rechte gehen, also entsprechende Einstellungen für jede einzelne Datei einer php(!!!)-basierenden Forums-software.

      Hintergrund: In diesem Forum sollen alle INTRAnet-Teilnehmer lesen können, aber nur die einer bestimmten OU schreiben (sich also anmelden) dürfen.

      Wegen hoher Fluktuationsraten der entsprechend Berechtigten oder eben nicht (mehr) berechtigten, deren Zugehörigkeit aber eben immer gaaaanz genau im AD steht, wird die Lösung über eben diese Gruppenanfrage gesteuert.

      Zunächst hatte ich das Script funktionierender Weise der entsprechenden login-php sozusagen vorgeschaltet, die Weiterleitung auf die "Fehlerseite" für die Nicht-Berechtigten funktionierte auch, aber das php-Script der login-Datei wurde weiter abgearbeitet.

      LG Kasia

      1. Moin!

        Der LDAP-Dienst ist das "beliebte" Active Directory von MS.

        Das macht ja nix.

        Wie ich das Problem serverseitig löse würde nur über die in Windows möglichen NTFS-Rechte gehen, also entsprechende Einstellungen für jede einzelne Datei einer php(!!!)-basierenden Forums-software.

        Auch PHP hat LDAP-Funktionen, die du nutzen kannst. Schon probiert?

        Alternativ gibt es auch die Möglichkeit, die Zugangsprüfung dem Webserver zu überlassen - aber wenn du den IIS einsetzt, kann ich dir absolut nicht weiterhelfen. Außerdem kollidiert das u.U. mit deinem Forums-Login.

        Zunächst hatte ich das Script funktionierender Weise der entsprechenden login-php sozusagen vorgeschaltet, die Weiterleitung auf die "Fehlerseite" für die Nicht-Berechtigten funktionierte auch, aber das php-Script der login-Datei wurde weiter abgearbeitet.

        Also ein PHP-Problem? Daran könnte man ja arbeiten.

        - Sven Rautenberg

        --
        "Love your nation - respect the others."
        1. Auch PHP hat LDAP-Funktionen, die du nutzen kannst. Schon probiert?

          Sorry, wie habe ich hier so schön gelesen: "Ich putze hier nur." Spaß beiseite, wenn ich das mittels Google und Co. richtig herausgefunden habe, benötigt man dazu eine php-Klasse, die auf unserem Firmenserver leider nicht installiert ist. Und außerdem müsste ich die Konnektierung zum LDAP-Server mit einem Benutzernamen und Passwort bei php vornehmen, bei vbs genügt die aktuelle Benutzeranmeldung im Firmennetzwerk

          Alternativ gibt es auch die Möglichkeit, die Zugangsprüfung dem Webserver zu überlassen - aber wenn du den IIS einsetzt, kann ich dir absolut nicht weiterhelfen. Außerdem kollidiert das u.U. mit deinem Forums-Login.

          Unelegant aber funktionierend habe ich (Ja, es ist ein IIS) nun doch den Weg über die NTFS-Rechte gewählt, sodass der Nicht-Berechtigte den Fehler 404 "Seite nicht gefunden" erhält - nicht schön, leider.
          Wenn ich es recht verstanden habe, könnte man den Fehler 404 zwar mit der Anzeige einer anderen Seite mittels .htaccess abfangen, aber eben nicht auf einem IIS-Server

          Also ein PHP-Problem? Daran könnte man ja arbeiten.

          Tja, leider führt das Script zwar die Weiterleitung aus, öffnet aber die "Fehlerseite" nicht in einem neuen Fenster und schließt das aktive, was nach meinen (lediglich angelesenen) Kenntnissen ja die php-Session beenden müsste.

          Ja, es mangelt mir auch an php-Kenntnissen (ich will durchaus nicht auf Mitglied machen, aber mein Chef sagt, du, der ... ist leider ausgefallen - mach mal!).

          • Sven Rautenberg

          (Kompliment, das geht hier ja rasend schnell)

          Kasia

          1. Moin!

            Unelegant aber funktionierend habe ich (Ja, es ist ein IIS) nun doch den Weg über die NTFS-Rechte gewählt, sodass der Nicht-Berechtigte den Fehler 404 "Seite nicht gefunden" erhält - nicht schön, leider.

            Nun ja, deine Lösung ist sowieso an allen Ecken und Enden unelegant, da kommt es auf diese Feinheit nun wohl auch nicht mehr an, oder?

            Wenn ich es recht verstanden habe, könnte man den Fehler 404 zwar mit der Anzeige einer anderen Seite mittels .htaccess abfangen, aber eben nicht auf einem IIS-Server

            Auch IIS-Server erlauben die Konfiguration von eigenen Fehlerseiten - nur eben nicht per .htaccess, sondern GUI-geführt in den Tiefen der IIS-Konfiguration.

            Wenn du darauf zugreifen kannst, solltest du das finden.

            Tja, leider führt das Script zwar die Weiterleitung aus, öffnet aber die "Fehlerseite" nicht in einem neuen Fenster und schließt das aktive, was nach meinen (lediglich angelesenen) Kenntnissen ja die php-Session beenden müsste.

            Nein, deine Annahme über die Session ist falsch. Sessions basieren auf dem Vorhandensein von einem Cookie. Dieses Cookie wird erst vergessen, wenn der Browser komplett geschlossen wird. Ein neues Fenster übernimmt jedoch die Cookies.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
          2. Wenn ich es recht verstanden habe, könnte man den Fehler 404 zwar mit der Anzeige einer anderen Seite mittels .htaccess abfangen, aber eben nicht auf einem IIS-Server

            Das geht auch im IIS, beschrieben z.B. hier:
            http://www.webmeister.ch/server/webserver/iis/errorpage.htm (via GUI)
            http://msdn2.microsoft.com/en-us/library/h0hfz6fc(VS.71).aspx (via web.config)

            Zu letzterem spuckt Google u.a. das hier aus:
            http://www.sitepoint.com/article/web-config-file-demystified

            Siechfred

            1. Wenn ich es recht verstanden habe, könnte man den Fehler 404 zwar mit der Anzeige einer anderen Seite mittels .htaccess abfangen, aber eben nicht auf einem IIS-Server

              Das geht auch im IIS, beschrieben z.B. hier:
              http://www.webmeister.ch/server/webserver/iis/errorpage.htm (via GUI)

              Danke, der Tip war gut und funktioniert auch.

              Damit hat sich das umständliche Problemchen erledigt.

              Falls irgendjemandem jedoch dennoch einfällt, ob man zum Beispiel die Variable "checkuser" an php übergeben kann oder mit vbs eine datei erstellt und mit php das Vorhandensein prüft, immer gern

              Kasia