Ausführung von Web-Agenten auf bestimmte Benutzer beschränken

  • Vermutlich habe ich ein ziemlich großes Brett vor dem Kopf...


    Ich habe einen Agenten, der im Browser laufen soll. Wie schaffe ich es, dass der Agent nicht von Hinz und Kunz ausgeführt wird, sondern nur von bestimmten Benutzern?


    Vielen Dank für Eure Ideen!

  • Serverweite Beschränkung ist leider nicht machbar.
    Wie prüfe ich es denn im Agenten ab? Mit Rollen? Mir fehlt der zündende Gedanke, in welcher Form ich am besten an die Benutzerinfos komme und wie ich sie auswerte. :(

  • Wenn du aktivierst das der Agent als Web Benutzer ausgeführt wird, dann kannst du über die Session Eigenschaften auf den aktuellen Benutzer zugreifen.
    Eine andere Methode wäre den Agenten über eine Maske aufzurufen in dem Rollen und Benutzername in berechneten Feldern stehen.

  • Beim mir ist der Server der aktuelle Benutzer. Ich war soweit, dass, wenn der Benutzer die Rolle nicht hat, eine neue Seite mit Login kommt:

    Code
    If entry.IsRoleEnabled( "[Vorschau]" ) =False Then
    Print |<h2><a href="http://|+db.server+|/|+db.FilePath+|/|+agent.name +|?openagent&login">Bitte melden Sie sich an</a><br> Der aktuelle Benutzername ist:|+session.commonUserName+|</h2>|
    	Else
    		'Jetzt kommt der eigentliche Agent


    Wenn ich jetzt den Benutzer mit Internetkennwort eingebe, bleibt trotzdem der Server aktueller Benutzer. Wie ändere ich das? Oder gibt es vielleicht einen viel einfacheren Weg, den ich gerade nur nicht sehe?

  • Zitat


    taurec schrieb:
    Hast du die Option Als Web User ausführen bei dem Agenten aktiviert.


    Ja, habe ich. Mein Scriptversuche stecken leider noch in den Kinderschuhen. Ist mein Ansatz denn überhaupt richtig?

  • Ich glaube da wird das so auch nicht funktionieren.
    Aber du kannst folgendes machen:
    Erstelle dir eine Maske mit einem Berechneten Feld (Formel @UserName bzw @UserNameList)
    Und stelle deinen Agenten in das WebQueryOpen dieser Maske hinein.
    Ruf jetzt anstelle deines Agenten die Maske auf.
    Du kannst innerhalb des Agenten jetzt über die Eigenschaft DocumentContext der Session auf dieses angezeigte Dokument und die Felder dort drin zugreifen und hast damit den Usernamen bzw die Rollen/Usernamen/Gruppen

  • Vielen Dank für Deine Mühe! Jetzt habe ich zumindest einen Ansatzpunkt, wie ich weiter vorgehen kann.


    Trotzdem finde ich es bemerkenswert, dass jeder, der über das Web irgendwie Zugriff auf die Datenbank hat und den Namen des Agent kennt, beliebige Scriptagenten ausführen darf. Zieht dann wenigstens die Beschränkung mit dem max. Internetzugriff oder darf jeder mit vollen Serverrechten rumhantieren???

  • Na ja ganz so ist es nicht., wenn die Option als Web benutzer ausführen angewählt ist dann wird der auch nur mit den Rechten des Benutzers ausgeführt. Nur an die Rollen und so ranzukommen ist etwas komplizierter

  • Warum bleibt dann bei mir immer der Server commonuser?
    Ich muss ja nicht zwingend auf die Rollen abprüfen, ich könnte ja auch auf ACL-Level abprüfen, wenn das denn geht.
    Das Umbiegen der Session auf den angemeldeten User funktioniert ja gerade nicht und damit hat der Agent doch Serverrechte, oder?

  • Ich habe selber die richtige Lösung gefunden!
    Bisher habe ich immer versucht, den aktuellen Benutzer über session.CommonUserName zu ermitteln, habe aber immer nur den Servernamen zurückgekommen.
    Mit

    Code
    Dim webdoc As Notesdocument
    Set webdoc = session.documentcontext
    Set entry = acl.GetEntry( webdoc.Remote_User(0) )


    bekomme ich endlich die Daten des angemeldeten Benutzers. Jetzt läuft der Agent so wie er soll... :)


    Vielen Dank für Eure Hilfe, sonst hätte ich bestimmt schon entnervt aufgegeben.