TwinCAT Hmi (TF2000) - Benutzer Login mit RFID

mgl

Level-2
Beiträge
237
Reaktionspunkte
46
Hallo Zusammen,

ich möchte gern eine Anmeldung auf der TwinCAT HMI über RFID umsetzen. Hat jemand damit Erfahrung?

Also prinzipiell bekomme ich vom RFID Scanner einen String. Den könnte ich über die virtuelle COM Schnittstelle direkt in JavaScript auswerten und mit einem irgendwo hinterlegten Zuordnungsliste mit RFID-String, Benutzername und Passwort auswerten und über die LogIn-Funktion der TcHMI API die Anmeldung durchführen.

Geht das auch irgendwie ohne "hinterlegter" Zuordnungsliste? Passwörter irgendwo in Klartext speichern ist nicht so toll. Oder gibt es ganz andere Möglichkeiten?

Vielen Dank schon mal im voraus.
 
Auch wenn ich jetzt mit dem TC HMI nicht so viel Erfahrung habe:

Ich empfehle immer die Benutzerverwaltung des Windows zu verwenden. Und ich bin sicher, dass das TC HMI das auch kann.

Der Ablauf ist dann folgender: Das HMI fragt Windows mit Benutzername und Passwort ab und bekommt eine Gruppenzugehörigkeit zurück. Das solltest Du in JavaScript auch so umsetzen können.
 
Nachtrag: Wenn Du die Benutzer dann in der Benutzerkontensteuerung anlegst, lösche die Gruppenzugehörigkeit User. Dann werden die auch nicht in der Windows-Anmeldung angezeigt.
 
Hallo Zusammen,

ich möchte gern eine Anmeldung auf der TwinCAT HMI über RFID umsetzen. Hat jemand damit Erfahrung?

Also prinzipiell bekomme ich vom RFID Scanner einen String. Den könnte ich über die virtuelle COM Schnittstelle direkt in JavaScript auswerten und mit einem irgendwo hinterlegten Zuordnungsliste mit RFID-String, Benutzername und Passwort auswerten und über die LogIn-Funktion der TcHMI API die Anmeldung durchführen.

Geht das auch irgendwie ohne "hinterlegter" Zuordnungsliste? Passwörter irgendwo in Klartext speichern ist nicht so toll. Oder gibt es ganz andere Möglichkeiten?

Vielen Dank schon mal im voraus.
Habe kuerzlich etwas sehr aehnliches umgesetzt.
Da eine vorhandene DB bereits alle Namen mit Gruppen und zugehoerigen Rfid-Nummer beinhaltet,
habe ich ein C#-Service im Hintergrund, welcher den String ausliest, in der DB nachschaut,
das Ergebniss dann per ADS an die Plc schickt.
Da ich eigene Benutzerverwaltung (bzw. Berechtigungverwaltung) ueber die Plc durchfuehre, nicht das vorhandene
Tf2000 Benutzerverwaltung einsetze, gibt es in der Form keine PWs, nur die Zuordnung ueber die Rfids.
Sicherheitstechnisch kann man das weiter ausbauen, allemal besser als die
zuvor gaengige "1234" Praxis :D
 
Und ich bin sicher, dass das TC HMI das auch kann.
Ich bin mir da nicht sicher. Es handelt sich dabei ja um eine WebHMI die unter verschiedenen Betriebssystemen läuft.


Habe kuerzlich etwas sehr aehnliches umgesetzt.
Das ist Lobenswert aber ich wollte eigentlich nicht unbedingt selber etwas zusammen basteln. Es ist schön, dass Beckhoff einem da alle Freiheiten bietet, aber schöner wäre es wenn man die Freiheiten nicht alle nutzen müsste und von fertigen Lösungen profitieren könnte.
 
Ich bin mir da nicht sicher. Es handelt sich dabei ja um eine WebHMI die unter verschiedenen Betriebssystemen läuft.
Da liegst Du falsch. Der Webserver läuft unter Windows. Und dort muss die Benutzerverwaltung sein. Die Benutzerverwaltung kann nicht im Client laufen. Denn dann wäre es so, wie Du es beschrieben hast.

Ich habe mir die Beckhoff-Benutzerverwaltung noch nicht angesehen, aber wenn die es halbwegs schlau gemacht haben, läuft es schon so, wie ich es beschrieben habe. Wenn nicht, kannst Du das aber auch als Server-Extension programmieren.

aber schöner wäre es wenn man die Freiheiten nicht alle nutzen müsste und von fertigen Lösungen profitieren könnte.

Schau mal unter NuGet, vielleicht gibt es das schon längst. Es muss ja nicht von Beckhoff sein.
 
Was ChatGPT ausspuckt: (NuGet-Erweiterungen gibt es warscheinlich nicht)

Empfohlene Architektur

RFID-Leser → SPS → TwinCAT HMI → Login/Benutzerwechsel

In der SPS speicherst du nicht den Klartext-Benutzer, sondern z. B.:
<span>RFID_UID → Benutzername / Rolle / Berechtigungslevel</span>
Ablauf:
  1. RFID-Karte wird gelesen.
  2. SPS prüft UID gegen eine Tabelle.
  3. SPS setzt z. B.:
    • CurrentOperatorName
    • CurrentOperatorLevel
    • LoginRequest
  4. TwinCAT HMI reagiert auf LoginRequest.
  5. HMI zeigt den angemeldeten Bediener an und schaltet Controls über Rollen/Level frei.
Wichtig: Ein echter TwinCAT-HMI-System-Login per SPS-Variable ist nicht automatisch dasselbe wie ein HMI-User-Login. Für reine Maschinenbedienung reicht oft ein eigener “Operator Login” über SPS-Variablen. Wenn du aber die native HMI-Benutzerverwaltung/Rollen verwenden willst, brauchst du meist eine Server Extension, die nach der SPS-Freigabe den HMI-Login serverseitig ausführt oder gegen die Benutzerverwaltung prüft.

Pragmatische Lösung:
UID in SPS prüfen
→ OperatorLevel setzen
→ HMI-Controls über OperatorLevel sperren/freigeben
Sauberere Lösung:
UID in SPS erfassen
→ Server Extension liest UID/LoginRequest
→ Extension mapped UID auf HMI-User
→ Extension führt HMI-Login/Session-Wechsel aus

Ich würde mit der pragmatischen SPS-basierten Variante starten, außer ihr braucht zwingend Audit Trail mit echtem HMI-Benutzerkontext.
 
Man muss hier aufpassen, nicht zwei Aspekte zu vermischen: Benutzerverwaltung und die Authentifizierungsmethode.

Die Benutzerverwaltung kann entweder innerhalb des TcHMI Server erfolgen oder über einen angebundenen LDAP Server. Der Vorteil des LDAP Servers ist, dass Benutzerkonten maschinenübergreifend automatisch gelten und nur an einer Stelle verwaltet werden; jedoch erfordert der LDAP Server zusätzliche Infrastruktur. Prinzipiell müsste man hier auch ein lokales AD anbinden können. Ob Entra ID klappt weiß ich nicht, da Microsoft mit den ganzen Azure Lösungen doch einiges anders macht als lokal.
Es gibt aber auch (kosten-)freie LDAP-Server.
Zur Benutzerverwaltung gibt es also mehrere Möglichkeiten.

Die Authentifizierungsmethode ist wieder was anderes. Hier kann man entweder klassisch per Benutzername/Passwort sich anmelden oder über die Anmelde-Script im HMI auch (automatische) Anmeldungen triggern. Eine Anmeldung per RFID ist meines Wissens out of the box nicht möglich - leider.
Den oben beschriebene Weg (RFID-Reader -> SPS + Datenbank -> Anmelde-Script im HMI) haben wir auch mal gemacht, verfolgen das aber nicht weiter. Wesentliche Gründe sind/waren:
- RFID Reader im Beckhoff Panel sieht eh "bescheiden" aus, soll wohl aber mit den neuen Panels besser werden
- Keine wirkliche belastbare Authentifizierung, da manipulierbar durch SPS
- Benutzerpflege an mehreren Stellen (Datenbank mit Zuordnung RFID-UID -> Benutzername und TcHMI / LDAP für die eigentlichen Benutzerkonten)

Ich würde mir wünschen, dass Beckhoff hier mal eine durchgängige Lösung out of the box anbietet.
 
Nachtrag:
Das Thema hat mich doch nochmal interessiert und ich habe nochmal im Infosys nachgeschaut: Beckhoff unterstützt mittlerweile auch OAuth 2.0. Darüber können Dienste wie Okta, Keycloak usw. angebunden werden. Innerhalb dieser Dienste kann man Authentifizierungs-Flows anlegen. Darüber ist eine Anmeldung auch per RFID denkbar.
Dann müsste der RFID-Reader aber direkt dem OAuth Provider bereitgestellt werden und nicht indirekt über die SPS laufen. In wie fern das bspw. über den internen RFID-Reader aus dem Beckhoff Panel oder über Drittanbieter-Panels möglich ist, kann ich jetzt nicht sagen.
 
Zurück
Oben