Jump to content

Windows 7 Useraccount, Dauerlogin erzwingen


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Hallo an alle,

 

ich hoffe ich habe das richtige Subforum gewählt. Sorry für die nichtssagende Überschrift, aber ich kann mein Problem nicht in wenigen Worten zusammenfassen. Vorerklärung zum Problem:

 

Ich habe eine PHP-Anwendung, die täglich eine Anfrage an eine Api stellen soll. Diese Api verlangt ein Userlogin im Browserfrontend um einen gültigen Authtoken zu vergeben. Es gibt keine Möglichkeit, dieses Login per PHP-Request zu erledigen, deshalb kann ich keinen Cronjob für die tägliche Abfrage nutzen. Ich habe daher zu diesem Zweck eine Chrome-Extension gebaut, die sowohl das Timing der täglichen Abfrage als auch das Login übernimmt. Das funktioniert soweit auch tadellos, aber

 

Problem:

Aus Gründen der Resourcenknappheit habe ich als Windowsserver auf dem der Chromebrowser laufen kann nur eine virtuelle Maschine mit einem Win7. Dort laufen auch andere Anwendungen unter unterschiedlichen Nutzeraccounts, teilweise ohne dass ich Einfluss darauf habe. Diese sorgen regelmäßig dafür, dass mein Account, in dem der Browser läuft, abgemeldet wird und so der automatische tägliche Request nicht mehr stattfindet.

 

Und nun zu meiner Frage:

Gibt es eine Möglichkeit, Windows so zu konfigurieren, dass ein bestimmter Account quasi "unabmeldbar" ist? Also dass sich andere Accouns zwar einloggen können und arbeiten, aber ohne meinen Account damit abzumelden. Oder vielleicht den Chrome auf einer Ebene des Betriebssytems zu starten, die unabhängig von Nutzeraccounts ist? Oder irgendeine andere Möglichkeit, zu garantieren, dass der Chromebrowser permanent läuft? Bin über jeden Vorschlag dankbar.

 

PS: Bitte keine Vorschläge ala: "Nimm einen anderen Server". Das werde ich mittelfristig tun, aber im Moment habe ich die Möglichkeit nicht.

 

Vielen Dank!

 

Link zu diesem Kommentar

Hallo und willkommen im Forum.

 

Sorry, aber für mich hört sich das ein wenig wirr an.

"Eine PHP-Anwendung greift  auf  eine API zu". Da Frage ich mich: Was hat der Browser mit diesem Zugriff zu tun? Wenn das ein HTTP(s)-Zugriff ist, kann man die Abfrage  sich auch mit einer passenden PHP-Funktion ausführen, bei der man auch Auth-Daten übergeben kann. Der Browser macht auch nichts  Anderes.

 

Siehe u.a. http://php.net/manual/de/httprequest.send.php

Link zu diesem Kommentar
Sorry, aber für mich hört sich das ein wenig wirr an.

"Eine PHP-Anwendung greift  auf  eine API zu". Da Frage ich mich: Was hat der Browser mit diesem Zugriff zu tun? Wenn das ein HTTP(s)-Zugriff ist, kann man die Abfrage  sich auch mit einer passenden PHP-Funktion ausführen, bei der man auch Auth-Daten übergeben kann.

 

Ich weiß durchaus, wie man eine normale API benutzt und wie im Regelfall die Authentifizierung funktioniert. Bei dieser ist es jedoch so, dass man das Authtoken über ein Redirect im Browser bekommt und das nur dann, wenn in diesem Browser der Login Cookie gesetzt ist, den man legal eben nur durch einen echten Login auf der Website bekommt. Diese Api ist absichtlich so gebaut, dass eine automatisierte Abfrage erschwert werden soll. Deine Antwort bezog sich nicht auf meine Frage und war nicht hilfreich.

 

---und um die ursprüngliche Frage zu beantworten: Es gibt in Windows nichts, was einen Benutzer zwangsabmeldet, der interaktiv angemeldet ist. Greifst Du per RDP zu? Dann beschäftige Dich mal mit den Session Timeout Limits.

 

Ja, ich greife mit Remote Desktop zu. Session Timeouts werd ich mir mal angucken, danke. Aber die dürften sich doch nur auf die RD-Verbindung beziehen, nicht auf den Login, oder?

 

 

Ich bin gestern noch über die Möglichkeit gestolpert eine Anwendung als Windows Service zu installieren. Der Service soll ja unabhängig von Userlogins laufen und würde mein Problem vermutlich lösen. Jetzt stellt sich mir die Frage, kann das mit einem GUI-Programm überhaupt funktionieren oder geht das nur mit Konsolenanwendungen? Wenn der Server neu startet und kein User angemeldet ist, hätte der Chrome-Service dann überhaupt eine Umgebung in der er laufen kann?

bearbeitet von pax78
Link zu diesem Kommentar

Ich bin gestern noch über die Möglichkeit gestolpert eine Anwendung als Windows Service zu installieren. Der Service soll ja unabhängig von Userlogins laufen und würde mein Problem vermutlich lösen. Jetzt stellt sich mir die Frage, kann das mit einem GUI-Programm überhaupt funktionieren oder geht das nur mit Konsolenanwendungen? Wenn der Server neu startet und kein User angemeldet ist, hätte der Chrome-Service dann überhaupt eine Umgebung in der er laufen kann?

Bei einem Service musst Du die Meldungen natürlich ins Eventlog umleiten, denn wer soll bei einem Dienst Messageboxen anklicken? Es geht mit GUI und auch mit Konsolenanwendungen. Aber natürlich nur wenn in der GUI-Anwendung auch jede Meldung ins Eventlog geschrieben wird. Und nein, ein Dienst kann keine Kommunikation mit einem angemeldeten User führen. Zumindest nicht so, wie Du das gewohnt bist.

 

Und Du mußt drauf achten, welchen Benutzeraccount Du beim ausführen des Dienstes vewendest, soll der User auch Zugriff auf außerhalb der Maschine haben? Ober der Chrome Service das kann weiß ich nicht. Entweder beim Hersteller nachfragen oder selbst ausprobieren.

bearbeitet von Sunny61
Link zu diesem Kommentar

Ich weiß durchaus, wie man eine normale API benutzt und wie im Regelfall die Authentifizierung funktioniert. Bei dieser ist es jedoch so, dass man das Authtoken über ein Redirect im Browser bekommt und das nur dann, wenn in diesem Browser der Login Cookie gesetzt ist, den man legal eben nur durch einen echten Login auf der Website bekommt. Diese Api ist absichtlich so gebaut, dass eine automatisierte Abfrage erschwert werden soll. Deine Antwort bezog sich nicht auf meine Frage und war nicht hilfreich.

 

 

 

 

Das tut mir Leid, dass meine Antwort nicht hilfreich war.

Du kannst mir  aber glauben, dass man diesen Zugriff programmatisch realisieren kann.

Cookies und Authtoken sind nicht anderes als HTTP-Header, die  man bei weiteren Requests halt wieder mit senden muss. Der Browser macht das  auch so.

Link zu diesem Kommentar

Das tut mir Leid, dass meine Antwort nicht hilfreich war.

Du kannst mir  aber glauben, dass man diesen Zugriff programmatisch realisieren kann.

Cookies und Authtoken sind nicht anderes als HTTP-Header, die  man bei weiteren Requests halt wieder mit senden muss. Der Browser macht das  auch so.

Ok, ich versuchs nochmal ganz langsam. Um ein OAuthtoken zu bekommen, braucht man eine ID. Diese ID bekommt man nur durch ein Redirect. Das Redirect des Apiservers leitet auf eine vorher im Apiserver eingetragene Redirecturl weiter und übergibt die ID als GET Parameter... aber NUR wenn man auf dem Apiserver als Benutzer eingeloggt ist. Anderenfalls leitet das Redirect auf die Loginseite. Diese Loginseite ist kein stumpfes 2 Felder Formular von 1995, sondern ziemlich gut mit hashs gesichert. Es ist eben NICHT ohne weiteres möglich, einfach mit PHP den Request dieses Formulars zu simulieren. Mit viel Mühe könnte man das vermutlich knacken, aber das wäre mit Sicherheit dann nicht mehr legal.

Bei einem Service musst Du die Meldungen natürlich ins Eventlog umleiten, denn wer soll bei einem Dienst Messageboxen anklicken? Es geht mit GUI und auch mit Konsolenanwendungen. Aber natürlich nur wenn in der GUI-Anwendung auch jede Meldung ins Eventlog geschrieben wird. Und nein, ein Dienst kann keine Kommunikation mit einem angemeldeten User führen. Zumindest nicht so, wie Du das gewohnt bist.

 

Und Du mußt drauf achten, welchen Benutzeraccount Du beim ausführen des Dienstes vewendest, soll der User auch Zugriff auf außerhalb der Maschine haben? Ober der Chrome Service das kann weiß ich nicht. Entweder beim Hersteller nachfragen oder selbst ausprobieren.

 

Das wäre in Ordnung. Der Browser muss normal laufen und Javascript ausführen können. Ich interessiere mich weder für seine Ausgaben noch sonst irgendwelche Meldungen.

 

Würdest du auf den zweiten Abschnitt bitte noch etwas genauer eingehen? Dienste werden also auch unter einem account ausgeführt? Der muss dazu aber nicht eingeloggt sein?

Zugriff von oder nach außerhalb ist nicht nötig. Der Browser braucht lediglich eine Internetverbindung.

Link zu diesem Kommentar

Ohne da  jetzt näher einzusteigen: PHP hat auch was für OAuth :

 

1.0  http://php.net/manual/de/book.oauth.php

 

oder 2.0 https://developers.google.com/api-client-library/php/auth/web-app

 

Z.B. benutzt meine FB zu Hause auf OAuth, um mit Google eine Telefonbuch zu syncen. Normalerweise kann man hier ein permanentes Token anfordern, das man nicht ständig  erneuern muss.

Im Falle meiner Fritzbox hat das Token sogar die Aktivierung der 2-Faktor Authentifizierung bei Google überlebt. Die Android-Dinger mussten aber einmalig neu  angemeldet werden.

Link zu diesem Kommentar

@zahni

Erst mal danke für Deine Geduld trotz meines Widerstandes. Du kannst dich gern mal daran versuchen und beweisen dass ich Unrecht habe. Die Api um die es geht ist die Instagram Api. https://instagram.com/developer/#

Wenn es Dir gelingt dort Channelinformations, Posts, Followers, Likes usw. auf eine Art und Weise mit PHP abzufragen, die ohne Browserlogin auskommt und mit Cron gestartet werden kann, dann halt ich Dich hinterher für den Größten. Mein Problem wäre damit gelöst. Vielleicht sollte ich dann auch zum Gebäudereiniger umschulen ;-).

 

@Sunny61

Danke. Ausführlich genug :-)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...